Java 如果绘制的图像未保存在SD卡中,我会做错什么?
我在清单文件中设置了必要的权限,Toast通知实际上显示图像已保存。下面是执行保存作业的方法Java 如果绘制的图像未保存在SD卡中,我会做错什么?,java,android,android-studio,Java,Android,Android Studio,我在清单文件中设置了必要的权限,Toast通知实际上显示图像已保存。下面是执行保存作业的方法 public void saveImage () { int count = 0; File sdDirectory = Environment.getExternalStorageDirectory(); File subDirectory = new File(sdDirectory.toString() + "/Pictures/Paint");
public void saveImage () {
int count = 0;
File sdDirectory = Environment.getExternalStorageDirectory();
File subDirectory = new File(sdDirectory.toString() + "/Pictures/Paint");
if (subDirectory.exists()) {
File[] existing = subDirectory.listFiles();
for (File file : existing) {
if (file.getName().endsWith(".jpg") || file.getName().endsWith(".png")) {
count++;
}
}
} else {
subDirectory.mkdir();
}
if (subDirectory.exists()) {
File image = new File(subDirectory, "/drawing_" + (count + 1) + ".png");
FileOutputStream fileOutputStream;
try {
fileOutputStream = new FileOutputStream(image);
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
Toast.makeText(getContext(), "saved", Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
}
我的图像是从绘制的文件创建的。我可能遗漏了什么?我认为您的
mBitmap
变量中没有任何内容,或者您在创建图像文件的行中添加了一个额外的/
。试着这样做:
File image = new File(subDirectory, "drawing_" + (count + 1) + ".png");
无论哪种方式,如果不起作用,您将不得不调试它。我会删除try->catch语句并查看是否出现错误,直到您知道它工作正常为止,然后只添加try->catch语句。您到底在哪里将内容写入新文件?@MrFisherman我相信这行fileOutputStream=new fileOutputStream(image);应该是我写的。很长一段时间以来,我一直在用android编程,我遵循的教程就是这样的。但是你只是告诉fileOutputStream输出文件/路径在哪里,似乎你没有向这个文件写入任何内容。检查这个:也把断点放在if(subDirectory.exists())行上,运行debbuger模式,检查它是否为true。