2013-07-16 174 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可能为空。

相关问题