【问题标题】:FileWriter don't write string with 78510 lengthFileWriter 不写入长度为 78510 的字符串
【发布时间】:2016-02-18 23:48:57
【问题描述】:

我有一个问题,我有一个 MyObject 列表,我想把它写在一个 json 文件中。

所以我用 gson 将我的列表解析为 json,并将字符串写入文件中,但没有写入任何内容,文件已创建但为空(0 个八位字节)。

如果我的List<MyObject> 有 60 个项目并且我将其解析为 json,则字符串的长度为 14482,并且 Filewriter 工作正常。

如果我的List<MyObject> 有 60 多个项目并且我将其解析为 json,则 Filewriter 什么也不做,并且文件为空。 例如,如果我的列表有 300 项,则长度为 78909

这是我在文件中写入列表的代码:

 private void saveTrace() {
    try {
        Log.d(mapsActivity.TAGDEBUG, "Sauvegarde de la trace automatique");
        Log.d(mapsActivity.TAGDEBUG, "Nombre de point compris dans la trace automatique: " + String.valueOf(listBeanTraceUser.size()));
        String sFileNameTrace = "trace_" + currentDate + ".xml";
        File traceFile = new File(root, sFileNameTrace);

        MediaScannerConnection.scanFile(mapsActivity, new String[]{traceFile.getAbsolutePath()}, null, null);

        FileWriter writer = new FileWriter(traceFile);
        BufferedWriter out = new BufferedWriter(writer, 32768);
        String jsonStringTrace = gson.toJson(listBeanTraceUser);
        Log.d(mapsActivity.TAGDEBUG, "lenght jsonStringTrace : " + String.valueOf(jsonStringTrace.length()));
        out.write(jsonStringTrace);
        out.close();
    } catch (Exception e) {
        Log.d(mapsActivity.TAGDEBUG, "Erreur lors de la Sauvegarde de la trace automatique");
        e.printStackTrace();
    }
}

【问题讨论】:

    标签: java android gson filewriter bufferedwriter


    【解决方案1】:

    尝试添加

    out.flush();
    

    在写入和关闭文件之间以确保它已完全完成。

    这是因为您使用的 BufferedWriter 内部缓冲区大小为 32768

    【讨论】:

    • 如果我删除它的大小是一样的。我会尝试一一保存而不是所有列表
    • @Slasch 在关闭 writer 之前是否添加了所需的 out.flush() 方法调用?
    • @Slasch BTW,你也不要关闭作者。尝试添加 writer.close() 调用。
    • 最后我将一个对象''trace'保存了一个。当我得到一个“跟踪”时,我直接保存在一个文件中,然后我附加其他的。这更安全,如果我的应用程序因 x 原因关闭,我的文件中有内容。感谢 Cedric L
    【解决方案2】:

    尝试使用 PrintWriter/PrintStream 写入文件。像这样:

    PrintWriter printWriter=new PrintWriter(writer); 
    printWriter.println(jsonStringTrace );
    printWriter.close();
    

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 2013-11-03
      • 2020-08-28
      • 2011-05-03
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      相关资源
      最近更新 更多