2017-04-18 165 views
0

我試圖讓這個程序讀取一行輸入文件中的行,然後將其打印到一個輸出文件,因此,例如:輸入和輸出程序

輸入文件包含:

cookies 
cake 
ice cream 

我想輸出文件,顯示這一點:

1號線:餅乾

線路2:蛋糕

線3:冰淇淋

我不知道如何做到這一點,所以任何幫助將不勝感激。

public static void main(String[] args) throws Exception { 
     Scanner in = new Scanner(System.in); 
     System.out.print("Enter the input file: "); 
     String name = in.next(); 
     FileReader file = new FileReader(name); 

     BufferedReader reader = new BufferedReader(file); 

     String text = ""; 
     String line = reader.readLine(); 



     while(line != null){ 
      text += line; 
      line = reader.readLine(); 
     } 

     reader.close(); 




     System.out.print("Enter the output file: "); 
     String out = in.next(); 

     FileWriter filew = new FileWriter(out); 

     BufferedWriter buffw = new BufferedWriter(filew); 
     buffw.write(text); 
     buffw.close(); 
     System.out.print("File written!"); 
     in.close(); 
    } 

} 
+0

什麼是你的代碼的問題:

while(line != null){ text += line; text += '\n'; line = reader.readLine(); } 

我會用StringBuilder,而不是像字符串連接建議你? – Jens

+0

從現在開始,它將輸出結果作爲一行打印出來,我希望它像我提到的那樣有多行。 – bacon9

+0

您正在讀取每一行並將其連接到一個字符串,而不添加任何新行。所以它看起來合法。 'readLine'消耗結束行字符。 – AxelH

回答

1

的問題是像循環:

while(line != null){ 
    text += line; 
    line = reader.readLine(); 
} 

readLine方法會吃掉新行字符,因此你沒有看到它在輸出文件中。您需要在最後追加新的行字符,如:

StringBuilder stringBuilder = ... 
while .. 
    stringBuilder.append(line); 
    stringBuilder.append('\n'); 
... 
0

你必須再次添加一行字符的結束,因爲readLine()刪除它:

while(line != null){ 

     text += line; 
     text +="\n"; 
     line = reader.readLine(); 
    }