2014-01-29 2 views
0

Я использую FileReader для чтения и FileWriter в файл. Я вижу, что чтение успешно (путем печати до console), но письма не происходит.Почему файл не работает в java?

вот код:

public class ReadingIO { 

    public static void main(String[] args){ 
     try { 
      processfile(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    private static void processfile() throws IOException{ 
     BufferedReader fi = new BufferedReader(new FileReader("words.txt")); 
     Writer out = new BufferedWriter(new FileWriter("testwrite.txt")); 
     String b; 
     while ((b=fi.readLine())!=null){ 
      System.out.println(b); 
      out.write(b); 

     } 
    } 


} 

Если я использую FileInputStream и FileOutputStream это работает. Я хочу знать, почему FileWriter терпит неудачу, а не альтернативные пути для этого.

+0

заподлицо или закройте свой поток. –

+0

Я не закрывал 'FileOutputStream', и это сработало. но с 'FileReader' он не работает –

ответ

1

Необходимо позвонить по телефону out.flush(), когда все будет готово.

+0

Также' fi.close() 'и' out.close() ' –

+1

также не используют методы' .close() ', они неявно называют' .flush() ', и это меньше, чтобы запомнить/испортить. – SnakeDoc

1

Добавить следующие строки после цикла while.

out.close(); 

Этот метод будет кал метода Flush() автоматически записывать данные в файл, который все еще буферизация, а затем закрыть поток.

+0

Флеш() является избыточным. Закрытие потока сбрасывает его. – EJP

+0

Хорошо, спасибо EJP. – Adnan

+0

Идея в том, что вы вносите свой ответ. – EJP

2

flush() при использовании Writer.

Но не нужно, а FileOutputStream

волосок заподлицо на поток, поэтому поток не нужен, если вы хотите, чтобы закрыть поток.

+0

, но я не закрыл FileOutputStream и все еще работал, почему? –

+0

, потому что 'FileOutputStream' не буферизирован, поэтому данные напрямую записываются в файл. – NFE

+0

есть также метод close для FileOutputStream. почему это только для bufferedStream закрывается существенно? –