Android OpenFileInput不会引发FileNotFoundException

Android OpenFileInput不会引发FileNotFoundException,android,Android,我正在参加一个在线安卓课程,但(到目前为止)在他们的论坛上没有得到对此问题的回应。我在Windows8.1上使用Android Studio 我使用以下函数读取文件并加载适配器: private void loadItems() { BufferedReader reader = null; try { FileInputStream fis = openFileInput(FILE_NAME); reader = new BufferedRead

我正在参加一个在线安卓课程,但(到目前为止)在他们的论坛上没有得到对此问题的回应。我在Windows8.1上使用Android Studio

我使用以下函数读取文件并加载适配器:

private void loadItems() {
    BufferedReader reader = null;
    try {
        FileInputStream fis = openFileInput(FILE_NAME);
        reader = new BufferedReader(new InputStreamReader(fis));

        String title = null;
        String priority = null;
        String status = null;
        Date date = null;

        while (null != (title = reader.readLine())) {
            priority = reader.readLine();
            status = reader.readLine();
            date = ToDoItem.FORMAT.parse(reader.readLine());
            mAdapter.add(new ToDoItem(title, Priority.valueOf(priority),
                    Status.valueOf(status), date));
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    } finally {
        if (null != reader) {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
我的问题是:


  • 我在硬盘上找不到以常量文件名命名的文件。如果文件不存在,不应该openFileInput()抛出FileNotFoundException

  • 为什么InputStreamReader不抛出错误

  • 通过调试器,我看到进入WHILE构造的逻辑保护条目愉快地允许title变量中的空值进入循环。我是不是遗漏了什么

  • 提前感谢任何人能提供的任何信息


    Markb

    “我在硬盘上的任何地方都找不到以常量文件名命名的文件”-这是因为您的计算机正在运行Windows。Android不是Windows。文件将在Android环境(模拟器或设备)中,而不是在Windows文件系统中。关于#1:您是否在Android设备上执行此代码?在这种情况下,文件必须位于设备的存储器上,而不是硬盘上。关于#2:应该这样做,除非该文件确实不存在。关于#3:在你的循环中,你调用
    getLine
    三次,而没有注意
    null
    值。@commonware-这就是我所想的,但是在在线课程中阅读我帖子的大约16名论坛成员似乎不知道这种可能性。android emulator上也没有可以查看文件系统的应用程序,所以我不得不在这里问这个问题。谢谢@仍然在学习-感谢验证(参见Commonware的评论)。然而,有一件事仍然困扰着我。如果我杀了模拟器,它不会释放所有本地存储和文件吗?但当我重新启动IDE时,问题仍然存在。应用程序能保存文件吗?我告诉课程工作人员,他们也需要更健壮的错误处理!我将把这些评论发回课程论坛