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