2016-08-17 4 views
-1

этот код меня сбивает с ума, он всегда печатает нуль, и я не понимаю, почему и согласно публикации java docs печать null означает, что файл пуст, и это не в моем случае.BufferReader всегда возвращает null

static public void main(String[] args) throws IOException { 
    FileReader fr = new FileReader(new File("Hosam.txt")); 
    FileWriter fw = new FileWriter(new File("Hosam.txt")); 

    BufferedReader bf = new BufferedReader(fr); 
    PrintWriter pr = new PrintWriter(fw); 

    String g = "hosam"; 
    while ((g = bf.readLine()) != null); { 
     System.out.println(g)); 
     pr.print(g); 
    } 
    bf.close(); 
    pr.close(); 
} 
+1

Вы дважды вызываете readline. Таким образом, если файл имеет только одну строку, вы получаете нуль во втором операторе readline. – Jens

+0

Просто небольшой совет. Правильно форматирование кода делает его проще для других пользователей для диагностики проблем. – byxor

+0

@BrandonIbbotson thnaks :) –

ответ

0

Вы звоните bf.readLine() дважды! Один раз в течение цикла; затем внутри тела цикла. Просто не делай этого!

Как это означает, что вы просто «выбрасываете» половину своих линий!

+0

даже я меняю его на ** g ** он также печатает нуль –