我试图将数据保存到sdCard首先我试图在使用getExternalFilesDir的externalStorage上的app目录中私下保存它但是给了我nullPointerException所以我尝试了下面给出的其他方式它工作但是当我想将文件存储到自定义目录时我想给自己命名它给我错误:
FileOutputStream os;
dirName = "/mydirectory/";
try {
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED)){
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + dirName);
dir.mkdirs();
//File file = new File(this.getExternalFilesDir(null), this.dirName+fileName); //this function give null pointer exception so im using other one
File file = new File(dir, dirName+fileName);
os = new FileOutputStream(file);
}else{
os = context.openFileOutput(fileName, MODE_PRIVATE);
}
resizedBitmap.compress(CompressFormat.PNG, 100, os);
os.flush();
os.close();
}catch(Exception e){
}
错误日志:
java.io.FileNotFoundException:/mnt/sdcard/mvc/mvc/myfile2.png(没有这样的文件或目录)
答案 0 :(得分:8)
您的目录“/ mnt / sdcard / mvc / mvc”可能不存在。如何更改路径以将图像存储在Environment.getExternalStorageDirectory()
路径中然后从那里工作?
另外,正如罗伯特指出的那样,请确保您的清单中有write permission to external storage。
编辑 - 创建目录:
String root = Environment.getExternalStorageDirectory().toString();
new File(root + "/mvc/mvc").mkdirs();
然后您可以将文件保存到root + "/mvc/mvc/foo.png"
。
答案 1 :(得分:5)
您是否已获得写入SD卡的许可?将以下字符串添加到应用清单:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 2 :(得分:0)
您应该检查是否已将所需的权限android.permission-group.STORAGE
添加到您的应用中。没有该许可,您将无法访问SD卡上的任何内容。
顺便说一句:在Android系统上,我知道SD卡已安装在/sdcard
而非/mnt/sdcard
答案 3 :(得分:0)
我发现这本书非常有用:“Pro Android Media:为智能手机和平板电脑开发图形,音乐,视频和Rich Media应用”。我注意到一个部分允许将图像和内容保存到SD卡。