【问题标题】:Printwriter creates empty files even after using printwriter.close即使在使用 printwriter.close 之后,Printwriter 也会创建空文件
【发布时间】: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 语句来避免在抛出异常时让编写器处于打开状态 - 并在您不使用它的任何功能时避免使用 PrintWriterBufferedWriter 在这里会很好,并且不会像 PrintWriter 那样抑制异常。我还建议使用StandardCharsets 而不是命名编码。或者只使用默认使用 UTF-8 的Files.newBufferedWriter...

标签: java file-io printwriter


【解决方案1】:

请确保您的fileName 有效并且您的fileContent 不为空(使用条件调试或添加控制台输出)。

要测试PrintWriter,您可以使用这个简短的示例代码:

PrintWriter docFileWriter = new PrintWriter("C:/temp/temp.txt", "UTF-8");
docFileWriter.write("Some special text: Aäç/)!é");
docFileWriter.close();

当您的文件有时为空但存在时,您应该注意fileContent 变量。

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多