【发布时间】:2016-01-19 16:05:40
【问题描述】:
我正在使用PrintWriter,但它有时会创建空文件。
我最后也使用了PrintWriter.close(),但有时它仍然会创建空文件。
代码:
StringBuilder fileContent = new StringBuilder();
for (Iterator<String> i = fieldMap.values().iterator(); i.hasNext();)
{
String fieldValue = i.next();
LOG.debug("Write information to outputfile: fieldValue" + fieldValue);
fileContent.append(fieldValue);
if (i.hasNext())
fileContent.append("~");
}
// Member errorMessage is only set in case of fatal error and might
// be appended without risk since in
// this case this content is only written to logger.
fileContent.append(errorMessage);
fileContent.append("\n");
PrintWriter docFileWriter = new PrintWriter(fileName, "UTF-8");
docFileWriter.write(fileContent.toString());
docFileWriter.close();
【问题讨论】:
-
欢迎来到 Stack Overflow。请展示一个简短但完整的程序来说明问题 - 并对其进行格式化以使其可读。我强烈建议您使用 try-with-resources 语句来避免在抛出异常时让编写器处于打开状态 - 并在您不使用它的任何功能时避免使用
PrintWriter。BufferedWriter在这里会很好,并且不会像PrintWriter那样抑制异常。我还建议使用StandardCharsets而不是命名编码。或者只使用默认使用 UTF-8 的Files.newBufferedWriter...
标签: java file-io printwriter