繁体   English   中英

使用 Java 写入 txt 文件时是否有行数限制?

[英]Is there a line limit when writing to a txt file using Java?

我试图通过将它们写入 txt 文件来保留 http 响应的日志。

我在Java中使用FileWriter,但不幸的是当超过行数(例如1000行)或txt文件的大小(例如80kb)时,它会自动删除以前的内容并写入新内容。

每次超过限制时都会发生这种情况。

try{
    File file = new File("response.txt");
    file.createNewFile();
    FileWriter writer = new FileWriter(file,true);
    writer.write(+System.currentTimeMillis()+"\t"+response+"\n");
    writer.flush();
    writer.close();}
catch(IOException ioe){
    System.out.println("\nError");}
file.createNewFile();

每次调用此方法时,您都会在此处创建一个新文件。

FileWriter writer = new FileWriter(file,true);

在这里,您尝试附加到现有文件,该文件由于先前的File.createNewFile()而不再存在。 因此,每次调用此方法时,您都会丢失所有先前的输出并写入新文件。 去掉它。

这种事无巨细,处处都在浪费时间和空间。 无论如何, new FileWriter()已经必须完成所有这些,而您只是强迫它发生两次:在这种情况下,是错误的。

事实上,您应该尝试保持文件打开,而不是每次调用此方法时都重新打开和重新关闭它。 你在做什么是非常低效的。 以及不工作。

注意当您遇到异常时,打印异常 不仅仅是"error" 否则接下来你会问为什么它会打印"error" ,因为你没有正确编写代码。

我猜是因为:

  • 磁盘空间不足。
  • file.createNewFile()用于每一行,它不可靠。
  • 您为每一行打开和关闭流。
  • 您无需同步即可在多线程环境中调用此代码。

请尝试以下操作:

BufferedWriter out = null;
try
{
    out = new BufferedWriter(new FileWriter(file, true));
    out.append(response);
    out.newLine();
} catch(Exception e)
{
    e.printStackTrace();  // if needed
    out.append("Error");
    out.newLine();
}
finally
{
    ResourceUtil.closeQuietly(out);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM