2014-10-10 3 views
0

У меня возникла проблема с записью данных в файл .txt. Он не записывает все данные в мой .txt-файл. Я попробовал его поместить все в массив, но и это не работает.Невозможно записать все данные в txt-файл

Мой код:

BufferedWriter writer = null; 

    try { 
     String line; 
     Process p = Runtime.getRuntime().exec("ps -A -o pid"); 
     BufferedReader input = 
       new BufferedReader(new InputStreamReader(p.getInputStream())); 
     while ((line = input.readLine()) != null) { 

       writer = new BufferedWriter(new FileWriter(" the path ..")); 
       writer.write(line); 
      System.out.println(line); 

     } 
     writer.close(); 
     input.close(); 

    } catch (Exception err) { 
     err.printStackTrace(); 
     System.out.println("Sorry!"); 
    } 

Он пишет только последнюю строку консоли.

+3

Возможно, это потому, что вы воссоздаете запись каждый раз в цикле вместе с файлом. По умолчанию он, вероятно, усекает файл и добавляет новый контент. –

ответ

6

Повторно создавая объект, не закрывая его во время каждой итерации цикла, вы отбрасываете то, что вы написали до сих пор (вы должны использовать writer.close(), чтобы сохранить то, что вы написали с помощью объекта).

Вам нужно будет объявить писатель перед циклом, поэтому изменить его на следующее

BufferedWriter writer = null; 

    try { 
     String line; 
     Process p = Runtime.getRuntime().exec("ps -A -o pid"); 
     BufferedReader input = 
       new BufferedReader(new InputStreamReader(p.getInputStream())); 
     writer = new BufferedWriter(new FileWriter(" the path ..")); 
     while ((line = input.readLine()) != null) { 

       writer.write(line); 
      System.out.println(line); 

     } 
     writer.close(); 
     input.close(); 

    } catch (Exception err) { 
     err.printStackTrace(); 
     System.out.println("Sorry!"); 
    } 

Могу ли я просто спросить, почему вы вновь объявляя писатель объект каждой итерации?

+0

Ах, я вижу, я только что удалил его. – NadirDev

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