每个人。我正在尝试将带有 android 的图片保存到 sd 卡上的公共图片目录中。但是,我似乎无法打开文件进行写入。这是代码:
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
mExternalStorageWriteable = true;
}
if(mExternalStorageWriteable){
File root_dir = Environment.getExternalStorageDirectory();
root_dir.mkdirs();
File pictures_directory = new File(root_dir, "/Pictures/");
pictures_directory.mkdirs();
File outputfile = new File(pictures_directory, "test_file.jpg");
try {
outputfile.createNewFile();
FileOutputStream out = new FileOutputStream(outputfile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我的调试器总是跳转到 catch 块(由 createNewFile 调用引起),并且 IOExceptions 消息是“Not a Directory”。如果我删除 createNewFile 调用,FileOutPutStream 构造函数将引发 FileNotFound 异常。但是,将文件输出流打开到文件系统的根目录或图片目录似乎可以正常工作。
为了避免显而易见,我的清单包含 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 标签。我正在使用 API 级别 5,并且我的模拟器上安装了一个虚拟 SD 卡。非常感谢任何建议。
已解决:模拟器文件系统存在问题。DDMS 显示 /Pictures/ 出于某种原因被创建为文件或目录。创建一个新的模拟器解决了这个问题。