在java(android)中写文件时找不到文件异常

时间:2014-06-25 12:58:13

标签: java android file bitmap filenotfoundexception

我在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) {}

1 个答案:

答案 0 :(得分:-1)

试试这个:

File pictureFile = new File(Environment.getExternalStorageDirectory()+"/Android/data/"+getApplicationContext().getPackageName()+"/Files"+ File.separator + "Tempsave.png");

pictureFile.getParentFile().mkdirs();

如果文件目录不存在,则需要创建它们。如果不是,则FileOutputStream会抛出FileNotFoundException