【问题标题】:Java writes writes line multiple times?Java多次写入写入行?
【发布时间】:2014-07-09 19:19:53
【问题描述】:
static void goOut(String in) {
                  //instance variables
    String fileCopy = currentLine +     in;
    try {
        FileWriter writer = new FileWriter(output,true);


        writer.write(line1 + System.getProperty("line.separator", "\r\n"));
        writer.write(fileCopy + System.getProperty("line.separator", "\r\n"));


    }   catch(IOException ex) {
        ex.printStackTrace();
    }
}

按照其他用户指出的正确标准编辑代码。

【问题讨论】:

  • 为什么要创建两个FileWriter 对象同时写入同一个文件?这听起来像是灾难的秘诀。
  • 感谢您的回复。我试图以这种方式解决问题,但没有奏效。使用一个 FileWriter 它也不起作用。
  • 你可以再打电话给作家吧? writer.write(fileCopy + System.get....) 然后拨打writer.close();
  • 在多次调用该方法之前,您是否尝试过在方法之外编写一次您想要编写的内容?
  • 您为什么认为它会有所帮助? currentLine 是什么?

标签: java filewriter writer


【解决方案1】:

当然,因为这就是你告诉它要做的事情。每次调用它都会写入 x 和数字。一个快速修复:如果它是第一次运行,你可以保留一个标志设置它 flag = true. 并在你的方法中检查,像这样:

public class YourClass{

private boolean didRun = false;

static void goOut(String in) {

    ...... init ur file and writer
    if(!didRun)
       writer.write(Y);

     writer.write(in);
     writer.close();
     didRun = true;
    }
}

我不知道其余的代码,但我认为这就是你需要的

【讨论】:

  • 嗯,我按照你的要求做了,从来没有打印出来
  • 它工作但我得到一个 java.io.IOException: Stream closed 错误。它仍然会创建正确的文件类型:/
  • 如果你正确地打开/关闭一个作家,请仔细检查你的代码。我不知道你想要完全实现什么,但我认为如果你陈述你的要求,它可能会更有帮助。如果有帮助,别忘了标记我的答案
【解决方案2】:

我相信您想将“goOut”负责的工作分开。

你应该让“goOut”写下数字(在你的例子中)。

y 的写入(在您的示例中)不应该是方法的一部分,并且在开始写入文件时调用一次。

此外,@Jon Skeet 对多个 FileWriters 的看法是正确的。使用一个,因为它是同一个文件。

【讨论】:

    【解决方案3】:

    同意,听起来像一场灾难。

    当您使用多个写入器访问文件时,我预计会得到不可预知的结果。

    我不认为 FileWriter1 会在 FileWriter2 之前完成任务。

    另外,方法是不同步的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多