我在android中保存文件时遇到问题,FileOutputStream
不断回退到FileNotFoundException
,因此不会将文件写入外部存储。
是的,我确实在清单中设置了权限:
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
我已经添加了函数下面的代码,有人可以向我解释出现了什么问题,如果是它试图覆盖现有文件,是否有办法替换该文件(名称需要是静态的)?
(欢迎使代码看起来更好的提示)
Bitmap savebitmap = Bitmap.createBitmap(drawView.getDrawingCache());
File mediaStorageDir = new File(Environment.getExternalStorageDirectory()+"/Android/data/"+getApplicationContext().getPackageName()+"/Files");
if (!mediaStorageDir.exists()){
mediaStorageDir.mkdir();
}
File pictureFile = new File(Environment.getExternalStorageDirectory()+"/Android/data/"+getApplicationContext().getPackageName()+"/Files"+File.separator+"Tempsave.png");
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
savebitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
}
catch (FileNotFoundException e) {}
catch (IOException e) {}
感谢Guillaume和V0ID带领我获得最有效的正确答案。 下面是编辑到工作版本的示例代码。
Bitmap savebitmap = Bitmap.createBitmap(drawView.getDrawingCache());
File pictureFile = new File(Environment.getExternalStorageDirectory()+"/Android/data/"+getApplicationContext().getPackageName()+"/Files"+File.separator+"Tempsave.png");
pictureFile.getParentFile().mkdirs();
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
savebitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
}
catch (FileNotFoundException e) {}
catch (IOException e) {}
答案 0 :(得分:-1)
试试这个:
File pictureFile = new File(Environment.getExternalStorageDirectory()+"/Android/data/"+getApplicationContext().getPackageName()+"/Files"+ File.separator + "Tempsave.png");
pictureFile.getParentFile().mkdirs();
如果文件目录不存在,则需要创建它们。如果不是,则FileOutputStream
会抛出FileNotFoundException