2016-06-04 1 views
0

У меня проблема с записью в файл.Сохранение содержимого из JTextArea в файл с разделителями строк

Обычно я создаю простой текстовый редактор. Я загружаю файл таким образом:

try(BufferedReader br = new BufferedReader(new FileReader(currentlyEditedFile))) { 
      String line = ""; 
      editor.setText(""); 
      while((line = br.readLine()) != null) { 
       editor.append(line + "\n"); 
      } 
     } catch(Exception ex) { 
      ex.printStackTrace(); 
     } 

и после некоторых изменений, я хочу сохранить (записать) его обратно в файл.

Я делаю это следующим образом:

try(PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(currentlyEditedFile)))) { 
      String[] lines = editor.getText().split("\\n");//Tried \n, \\n 
      for(String s : lines) 
       pw.println(s); 
     } catch(Exception ex) { 
      ex.printStackTrace(); 
     } 

и содержание идет в файл, но это все в одной строке. Любые идеи, как писать по строкам?

+0

Вы используете окна? – Hackerdarshi

+0

yes, Windows 10 – DamDev

ответ

2

Вы можете загрузить содержимое текстового файла в JTextArea по следующим простым способом:

JTextArea textArea = new JTextArea(); 
FileReader reader = new FileReader("D:/text1.txt"); 
textArea.read(reader, "Content of File"); 
reader.close(); 

Вы можете написать содержание JTextArea в файл следующий простой и независимый от платформы путь:

PrintWriter pw=new PrintWriter("D:/text1.txt"); 
textArea.write(pw); 
pw.close(); 

Надеюсь, это полезно для вас.

+0

Отличный простой способ, но он имеет те же эффекты, что и мое решение. Загрузка содержимого в JTextArea работает правильно, но сохранение помещает контент в одну строку. :) – DamDev

+0

@DamDev Посмотрите исходный файл. У него есть все на одной линии? Если вы используете '\ r \ n', будет ли он работать так же в Linux? Я действительно протестировал его в своей системе Windows, он работает нормально. –

+0

Да, мой плохой. Просто загруженный файл, созданный с помощью проверенного метода, вероятно, поэтому он не работает. Я попробовал еще раз, и все работает отлично. Спасибо! :) – DamDev

1

Если вы используете Windows, то вы должны сделать:

editor.append(line + "\r\n"); 

Поскольку новая линия в Windows, обозначается \r\n, т.е. возврата каретки и перевода строки.

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