当我创建并尝试写入Android模拟器上的文件时,为什么要获得FilenotFoundException?
-
09-10-2019 - |
题
首先,我不是要写信给SDCARD。我想将一些信息写入应用程序使用之间存在的文件。本质上是一个文件,可以保留特定用户的收藏夹。这是代码的样子:
try {
File file = new File("favorites.txt");
if (file.exists()) {
Log.d(TAG, "File does exist.");
fis = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(fis));
}
else {
Log.d(TAG, "File does not exist.");
return favDests;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
运行此代码时,我们始终获得“文件不存在”。我们的DDMS日志中的消息。
我们还尝试了以下代码,但无济于事:
try {
File file = new File(GoLincoln.FAV_DEST_FILE);
fis = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(fis));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
代码的第二部分导致了FileNotFoundException。
我已经阅读了有关编写和阅读Android上的文件的多个教程,我相信我非常仔细地关注它们,因此我不确定为什么此代码无法成功工作。感谢任何帮助!
解决方案
你不应该使用 File
直接课。利用 Activity.getCacheDir()
要获得特定于您应用程序的高速缓存。然后使用 new File(cachedir, "filename.tmp")
创建文件。
其他提示
首选项和SQLLITE都将允许您在不管理自己的文件的情况下拥有持久数据。
要使用共享的首选项,您可以从上下文中获取它,然后您像这样编辑值
mySharedPreferences = context.getSharedPreferences("DatabaseNameWhateverYouWant", 0);
mySharedPreferences.getEditor().putString("MyPreferenceName", "Value").commit();
偏爱
mySharedPreferences.getString("MyPreferenceName", "DefaultValue");
这确实是进行基本首选项的最简单方法,而不是执行文件容易得多。然后支持字符串,大多数基本数据类型都可以添加到首选项类中。
不隶属于 StackOverflow