2014-07-09 63 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之前的任務。

此外,該方法不同步。