【问题标题】:Android openFileInput causes FileNotFoundAndroid openFileInput 导致 FileNotFound
【发布时间】:2015-01-18 23:25:21
【问题描述】:

我正在尝试编写/创建一个文件,但是无论我如何尝试,我都会遇到 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 文件夹不存在,因此无法在该目录中创建新文件,可能是这样吗?即使有权限,应用程序也可以没有文件夹吗?

我能做什么?

【问题讨论】:

  • 堆栈跟踪在哪里?
  • 您的代码都没有创建文件。如果您需要有关创建文件的代码的帮助,请发布该代码。您在这里的所有代码都试图读取文件,而不是写入文件。
  • 他说他得到了 FileNotFound 异常,这是openFileInput()抛出的检查异常

标签: java android filenotfoundexception fileinputstream


【解决方案1】:

要写入文件,您应该使用 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);

【讨论】:

    【解决方案2】:

    您收到 FileNotFound 是因为您尝试打开 input 流,请尝试:

    FileOutputStream is = openFileOutput(filename, MODE_PRIVATE);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2014-06-26
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多