Android openFileInput导致FileNotFound

时间:2015-01-18 23:25:22

标签: java android filenotfoundexception fileinputstream

我正在尝试编写/创建一个文件,但无论我如何尝试它,我都会得到一个filenotfound异常。 我已经尝试了所有这些:

FileInputStream is = openFileInput(filename);
File dirs = getFilesDir();
        File f_in = new File(dirs , "score6");
        FileInputStream fs = new FileInputStream(f_in);
Environment.getExternalStorage()

所有这些导致FnF我已将我的Android清单权限设置为

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE />    
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我认为app文件夹不存在,因为它无法在该目录中创建新文件,可能是吗?即使有权限,应用程序也可以没有文件夹吗?

我该怎么办?

2 个答案:

答案 0 :(得分:2)

要编写文件,您应该使用FileOutputStream。 使用它,如果你打开一个流,如果文件不在给定位置,它将通过FileNotFoundException。

使用FileOutputStream创建一个空文件(假设您使用FileInputStream显示的问题)

以下语句将创建一个空文件,无论它是否存在:

new FileOutputStream("filename.ext", false).close();

以下语句将创建该文件(如果不存在),并且如果文件存在则将离开:

new FileOutputStream("filename.ext", true).close();

但是,如果你想在之前检查,文件是否存在,并执行一些操作,如创建文件,如果不存在,那么试试这个:

File yourFile = new File("filename.ext");
if(!yourFile.exists()) {
    yourFile.createNewFile();
} 
FileOutputStream oFile = new FileOutputStream(yourFile, false);

答案 1 :(得分:0)

你得到FileNotFound是因为你试图打开输入流,试试:

FileOutputStream is = openFileOutput(filename, MODE_PRIVATE);

您不需要以这种方式创建文件的权限。 MODE_PRIVATE表示只有应用程序可以访问该文件。