无法在android中写入文件

时间:2014-06-15 01:14:41

标签: java android filewriter

这让我感到疯狂,因为它应该有效。我正在尝试将两个字符串arraylist写入文件。请记住,我正在写入内部存储,因此清除权限不是问题。这是我的代码:

File cacheFile = new File(context.getFilesDir(), getChannelFile(s[0]) + ".cache");
if (!cacheFile.exists()) {
    try {
        FileWriter out = new FileWriter(cacheFile);
        for (int i = 0; i < titleArray.size(); i++) {
            Log.d(timesArray.get(i), titleArray.get(i));
            out.write(timesArray.get(i) + "#" + titleArray.get(i));
            out.write(System.getProperty("line.separator"));
        }
        out.close();
        } catch (Exception e) {
            Log.e(Ids.TAG, e.getMessage());
    }
}

Logcat正好显示了我想写的内容。但它不会写入文件。执行此代码后,我的文件被创建,但是是0字节。我很茫然,因为没有异常被捕获,我的Log.d显示一切正确。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

以下代码段在从activity的onResume方法执行时有效。当然,这不是最好的地方,但测试还可以。

    File cacheFile = new File(getFilesDir(), "test.cache");
    List<String> titleArray = new ArrayList<String>(Arrays.asList("a", "b", "c"));

    if (!cacheFile.exists()) {
        try {
            FileWriter out = new FileWriter(cacheFile);
            for (int i = 0; i < titleArray.size(); i++) {
                out.write(titleArray.get(i));
                out.write(System.getProperty("line.separator"));
            }
            out.close();
        } catch (Exception e) {
            Log.e("Test", e.getMessage());
        }
    }

我的问题可以引导您回答:

  • 您想从哪个上下文写入文件?广播接收器?试试活动/服务。
  • 你是从后台主题或主要主题写的(不应该做出任何可以想象的差异)吗?
  • 你确定你有足够的空间吗?这个名单有多大?尝试编写一个包含几个字节的非常简单的文件并将其读回以确认它是否有效。
  • 您是否尝试过不同的设备和/或模拟器?问题是否仍然存在?
  • 您正在构建和测试的Android版本是什么?