2013-11-22 68 views
1

對不起,標題聽起來不清楚,我只是不知道該如何解釋。寫入文件時出錯 - 將文件加倍

所以,我想讀一些文件,修改它們,然後將它們添加到另一個文件。

這是原始文件:

line number one 
line number two 
line number three 

等等......

但是,當涉及到其打印到另一個文件,我得到這個:

line number one 
line number one line number one 
line number one line number one line number two 
line number one line number one line number two line number two 

這是我的代碼

這是讀取原始文件的部分

try { 
    File f = new File(path); 
    try (FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr)) { 

    while ((aux=br.readLine())!=null) { 

     //easyDecryp is the method that modifies the line. 
     //there's nothing wrong with it. 

     output += easyDecryp(aux)+"\n"; 
     aux=""; 
    } 
    br.close(); 
    fr.close(); 
}  

} catch(IOException e) { 
System.out.println("Error: "+e.getMessage()); 
} 

這裏我寫進新的

try { 
    File f = new File(path); 
    try (FileWriter fw = new FileWriter(f); PrintWriter pw = new PrintWriter(fw)) { 
     pw.println(output); 
    } 
} catch(IOException e) { 
    System.out.println("Error: "+e.getMessage()); 
} 

輸出是保存行的變量。他們全部。 應該由線讀取行,然後寫入新文件中,就像這樣:

output = line1 
//New line added 
output = line1 \n line2 

//Note the new line tag between every line 
+3

您擁有的代碼不會顯示您寫入文件的位置。什麼是「輸出」變量? – Dave

+0

發佈代碼如何將內容寫入另一個文件。你使用** output **變量,它是追加行內容。 **輸出+ = easyDecryp(aux)+「\ n」; ** – MouseLearnJava

+0

在try-with-resources結尾處,您不需要顯式的'Closeable.close()',順便說一句。 – mschonaker

回答

1

我覺得easyDecryp(aux)還是返回了行,然後你在最重要的是做+=。這就是爲什麼你的線路被重複。