2014-07-09 66 views
-2
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(); 
    } 
} 

将编码修改为正确的标准,正如其他用户指出的那样。Java多次写入写入行?

+9

为什么要创建两个写入同一文件的'FileWriter'对象?这听起来像是一场灾难。 –

+0

感谢您的回复。我试图解决这个问题,但它没有奏效。使用一个FileWriter它也不起作用。 – Adz

+0

你可以再次打电话给作家吗? 'write.write(fileCopy + System.get ....)',然后调用'writer.close();' –

回答

0

当然,因为那就是你告诉它做的事情。每次被称为它写入x和数字。快速修复:如果是第一次运行,您可以保留一个标志flag = true。和UR方法中的检查,某事像这样:

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; 
    } 
} 

我不知道代码的其余部分,但我认为是什么ü需要

+0

嗯,我做了你所问的y从来没有打印 – Adz

+0

我更新了答案,也许一些更易读的代码 – eldjon

+0

它的工作,但我得到一个java.io.IOException:流关闭错误。它仍然会创建正确的文件类型:/ – Adz

0

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

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

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

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

0

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

当您使用多个作家访问该文件时,我期望得到不可预知的结果。

我不认为有任何担保FileWriter1将完成FileWriter2之前的任务。

此外,该方法不同步。