2013-07-16 271 views
0

當我試圖運行OUT.TXT時,它是空的。你能幫我找出原因嗎?另外SPY.LOG行不是普通的,你可以用一種方法來修復這些行嗎?將文件寫入另一個文件

package burak; 
import java.io.*; 

public class Yucal { 
    public static void main(String [] args) { 

     String fileName = "spy.log"; 
     String line; 
     try { 

      FileReader fileReader = new FileReader(fileName); 
      BufferedReader bufferedReader = new BufferedReader(fileReader); 
      while((line = bufferedReader.readLine()) != null) 
      { 
      try{ 
        FileWriter fstream = new FileWriter("out.txt"); 
        BufferedWriter out = new BufferedWriter(fstream); 
        out.write(line); 
        out.close(); 
        } 
      catch (Exception e){ 
        System.err.println("Error: " + e.getMessage()); 
        } 
      System.out.printf("%65s\n", line); 
      } 
      bufferedReader.close();   
     } 
     catch(FileNotFoundException ex) { 
      System.out.println(
       "Unable to open file '" + 
       fileName + "'");     
     } 
     catch(IOException ex) { 
      System.out.println("Error reading file '" + fileName + "'");   } 
    } 
+2

你爲什麼大叫? :( – Maroun

+0

不要對我大喊,我有點敏感,所以在這裏我不去回答你。 – zEro

+0

你是什麼意思'不平凡'? –

回答

2

一些變化

FileReader fileReader = new FileReader(fileName); 
BufferedReader bufferedReader = new BufferedReader(fileReader); 
FileWriter fstream = new FileWriter("out.txt"); 
BufferedWriter out = new BufferedWriter(fstream); 
while ((line = bufferedReader.readLine()) != null) { 
    try { 
     out.write(line); 
     out.write("\n"); 
    } catch (Exception e) { 
     System.err.println("Error: " + e.getMessage()); 
    } 
    System.out.printf("%65s\n", line); 
} 
out.close(); 
bufferedReader.close(); 

這個錯誤是你while循環內打開FileWriter fstream = new FileWriter("out.txt");。它必須在外面。

0

另外移動所有關閉語句以最終阻止。

當您關閉這些流時,您可能還需要處理一些IO異常。

希望這會有所幫助。

1
 FileReader fileReader = new FileReader(fileName); 
     BufferedReader bufferedReader = new BufferedReader(fileReader); 
     while((line = bufferedReader.readLine()) != null) 
     { 
     try{ 
       >FileWriter fstream = new FileWriter("out.txt");** 
       >BufferedWriter out = new BufferedWriter(fstream);** 

     <snip> 

每次打開文件並寫入一行。然後關閉它。下次打開它時,會覆蓋文件的以前的內容。您應該在while循環外部移動標記爲>的行。

文件的最後一行spy.log可能爲空。

相關問題