当我创建并尝试在Android模拟器上写入文件时,为什么会出现FileNotFoundException?

时间:2010-12-12 21:40:56

标签: java android file-io android-emulator filenotfoundexception

首先,我不打算写信给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上编写和阅读文件的教程,我相信我非常密切地关注它们,所以我不确定为什么这段代码无法成功运行。我感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

您不应直接使用File课程。使用Activity.getCacheDir()获取特定于您的应用程序的缓存目录。然后使用new File(cachedir, "filename.tmp")创建文件。

答案 1 :(得分:1)

首选项和SQLLite都允许您拥有持久数据,而无需管理自己的文件。

要使用共享首选项,您可以从上下文中获取它,然后编辑像这样的值

mySharedPreferences = context.getSharedPreferences("DatabaseNameWhateverYouWant", 0);
mySharedPreferences.getEditor().putString("MyPreferenceName", "Value").commit();

获得偏好

mySharedPreferences.getString("MyPreferenceName", "DefaultValue");

这实际上是执行基本首选项的最简单方法,比执行文件要容易得多。支持更多字符串,大多数基本数据类型可以添加到Preferences类中。