【问题标题】:FileWriter won't write all of the file - yes, I have called close()FileWriter 不会写入所有文件 - 是的,我调用了 close()
【发布时间】:2015-10-06 23:15:52
【问题描述】:

代码如下:

        FileWriter writer = new FileWriter(csv);
        for (String line: lines) {
            writer.write(line);
            writer.write("\r\n");
            Log.d(TAG, line);
        }
        writer.close();

每一行都在 LogCat 中完美显示,并且在任何地方都没有抛出任何错误,但实际文件在第二行的末尾被截断。

编辑:

原来问题是 Android 的一个已知错误:https://code.google.com/p/android/issues/detail?id=38282

我通过在 writer.close 之后添加以下行来解决问题:

MediaScannerConnection.scanFile(context, new String[] { file.getAbsolutePath() }, null, null);

【问题讨论】:

  • 您如何检查文件的内容?如果您使用非常简单的行(“a”、“b”、“c”)来执行此操作,您是否仍然观察到问题?
  • 检查内容是什么意思?至于尝试简单的线条,是的,可以。
  • 我的意思是你清楚地以某种方式查看文件(否则你不会知道有什么问题) - 你是怎么做到的?你到底看到了什么,怎么看?如果你不能用非常简单的线条重现这个,你有没有弄清楚这些线条需要包含什么才能导致问题?
  • 哦,我现在明白了。我正在通过电脑上的手机读取内容来检查内容。
  • 试试new OutputStreamWriter(new FileOutputStream(csv), "UTF-8"))。可能是字符集问题。

标签: java android eclipse filewriter


【解决方案1】:

原来问题是 Android 的一个已知错误:https://code.google.com/p/android/issues/detail?id=38282

我通过在 writer.close 之后添加以下行来解决问题:

MediaScannerConnection.scanFile(context, new String[] { file.getAbsolutePath() }, null, null);

【讨论】:

  • 如果它是未来读者的最佳答案,请接受您自己的答案;)
【解决方案2】:

我认为您正在编写的内容仍在内存中,未同步到磁盘。

有时文件系统会等待更多内容一起刷新到磁盘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2014-03-13
    • 2011-03-01
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多