Android - java.io.FileNotFoundException
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24676525/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Android - java.io.FileNotFoundException
提问by srinu_stack
when i was inserting the bitmap image to files directory, it showing file not found exception and it is showing Is a Directory.
当我将位图图像插入文件目录时,它显示文件未找到异常,它显示是一个目录。
Here is my code:
这是我的代码:
File mFolder = new File(getFilesDir() + "/sample");
if (!mFolder.exists()) {
mFolder.mkdir();
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mFolder);
bitmap.compress(Bitmap.CompressFormat.PNG,70, fos);
fos.flush();
fos.close();
// MediaStore.Images.Media.insertImage(getContentResolver(), b, "Screen", "screen");
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Logcat:
日志猫:
07-12 01:08:05.434: W/System.err(8170): java.io.FileNotFoundException: /data/data/com.sample.sam/files/sample(Is a directory)
07-12 01:08:05.434: W/System.err(8170): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
07-12 01:08:05.434: W/System.err(8170): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:239)
07-12 01:08:05.444: W/System.err(8170): at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
07-12 01:08:05.444: W/System.err(8170): at java.io.FileOutputStream.<init>(FileOutputStream.java:77)
回答by Autocrab
you have to create file, before writing into stream.
在写入流之前,您必须创建文件。
File mFolder = new File(getFilesDir() + "/sample");
File imgFile = new File(mFolder.getAbsolutePath() + "/someimage.png");
if (!mFolder.exists()) {
mFolder.mkdir();
}
if (!imgFile.exists()) {
imgFile.createNewFile();
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(imgFile);
bitmap.compress(Bitmap.CompressFormat.PNG,70, fos);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
回答by Gil Moshayof
Use file.createNewFile()if you want to make a file and not a directory.
You may also need to use mkDirs()if the path doesn't exist either.
使用file.createNewFile(),如果你想使一个文件,而不是一个目录。mkDirs()如果路径也不存在,您可能还需要使用。
回答by Henry
You are opening the directory itself for writing. This does not work. You need to specify a file within the directory, e.g.:
您正在打开目录本身进行写入。这不起作用。您需要在目录中指定一个文件,例如:
fos = new FileOutputStream(new File(mFolder, "myfile"));
回答by Sujit Jamdade
File sdcard = Environment.getExternalStorageDirectory();
File dir = new File(sdcard.getAbsolutePath() + "/text/");
dir.mkdir();
File file = new File(dir, "sample.txt");
FileOutputStream os = null;
try {
os = new FileOutputStream(file);
os.write(enterText.getText().toString().getBytes());
os.close();
}
catch (IOException e) {
e.printStackTrace();
}

