2013-07-16 2 views
0

Когда я попытался запустить OUT.TXT, он был alwasy empty. Не могли бы вы помочь мне узнать, почему? Также 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(); 

Ошибку вы открыли 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 может быть пустым.

Смежные вопросы