запись или печать строки за строкой в ​​текстовый файл из строки текстового поля get

Я понимаю, что мой вопрос может повторяться, но я не смог найти нужный мне ответ в ответе на другой вопрос, у меня есть textArea, куда были добавлены некоторые данные. и я хочу записать эти данные в файл с тем же стилем строк, что и в textArea. Мой результат textArea выглядит следующим образом

Type    Model   Serial      Country WTY START   WTY END     SER.STRT    SER.END     Int.Warrnty
1234    123    1234567      XXXXXX  2012-07-04  2015-07-03  2012-07-04  2015-07-03  Yes
5678    456    4567890      XXXXXX  2011-05-11  2014-06-24  ....-..-..  ....-..-..  No

При попытке записать в текстовый файл там пишется вот так после да, сразу пишется вторая строчка.

Type    Model   Serial      Country WTY START   WTY END     SER.STRT    SER.END     Int.Warrnty
1234    123    1234567      XXXXXX  2012-07-04  2015-07-03  2012-07-04  2015-07-03  Yes5678 456    4567890      XXXXXX  2011-05-11  2014-06-24  ....-..-..  ....-..-..  No

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

мой код для этого

String getTextArea_1 = textArea_1.getText();
String userHomeFolder = System.getProperty("user.home");
File file = new File(userHomeFolder, "RESULT_3.txt");
try {
    FileWriter fw = new FileWriter(file);
    fw.append(getTextArea_1);
    fw.flush();
    fw.close();
} catch (IOException e1) {
    e1.printStackTrace();
}

Спасибо за помощь


person Aboelmagd Saad    schedule 09.08.2016    source источник
comment
Отладьте свою программу и проверьте, какие разрывы строк ('\r\n' или только '\r') у вас есть в переменной getTextArea_1 и совместимы ли они с вашими системами. Возможно, вам придется заменить их на правильные.   -  person Markus Mitterauer    schedule 09.08.2016
comment
Вы также можете заглянуть в try-with-resources. Это делает .close() для вас. -- docs.oracle.com/javase/tutorial/essential/exceptions/   -  person Markus Mitterauer    schedule 09.08.2016


Ответы (2)


измените свой try-catch на что-то вроде этого:

try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
    String[] strings = getTextArea_1.split("\n");
    for (String s : strings){
        writer.write(s);
        writer.newLine();        
    }
} catch (IOException e) {
    e.printStackTrace();
}
person Eritrean    schedule 09.08.2016
comment
Ты потрясающий человек. Я пробовал то же самое раньше, но я всегда объявлял массив перед предложениями try catch, и это никогда не работало, большое спасибо, это хороший урок для изучения;) - person Aboelmagd Saad; 10.08.2016

Вам нужно добавить \n после первого добавления, иначе вы будете писать в той же строке

person CoderRightInTheProgram    schedule 09.08.2016
comment
Что сначала добавить? Есть только один, и он сразу записывает все содержимое textArea. - person Markus Mitterauer; 09.08.2016