текстовое поле java и ввод в файл

#java #swing #file-io #jtextarea

#java #swing #файл-ввод-вывод #jtextarea

Вопрос:

У меня проблемы в моем Java-приложении. Я хотел перенести тексты в моем JTextArea файле .txt

например, я ввел

 "Hi
my name is george"
  

Я хочу, чтобы результат в моем .txt-файле был таким же

но что происходит, так это

 "Himy name is george"
  

Вот мой код

 private void btnCreateActionPerformed(java.awt.event.ActionEvent evt) {                                          
    String filename,content;
    String[] ArrContent=new String[9999];
    int wordctr=0;

    try
    {
        if(txtFilename.getText().isEmpty())
        {
            lblRequired.setText("Required Field");
        }else
        {
            lblRequired.setText(" ");
            filename=txtFilename.getText() ".txt";
            FileWriter fw=new FileWriter(filename);
            BufferedWriter writer = new BufferedWriter(fw);
            if(txtContent.getText().contains("rn"))
                writer.write("rn");
            writer.write(txtContent.getText());
            writer.close();
        }
    }
  

Комментарии:

1. Я думаю, что в текстовом поле есть только n . Попробуйте изменить: txtContent.getText().contains("rn") на txtContent.getText().contains("n")

2. спасибо за ответ… результаты все те же

3. Используйте JTextArea#write(Writer) вместо

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

5. @MadProgrammer извините, я только начал java, можете мне помочь, я не понял JTextAre#write (писатель)

Ответ №1:

Попробуйте использовать JTextArea#write(Writer) вместо этого…

 String filename = txtFilename.getText() ".txt";
try (FileWriter fw = new FileWriter(new File(filename))) {
    txtContent.write(fw);
} catch (IOException exp) {
    exp.printStackTrace();
}
  

И убедитесь, что вы прилагаете все усилия, чтобы закрыть созданные вами ресурсы…

Комментарии:

1. спасибо … хотя я не могу понять разницу между тем, что я сделал, и тем, что сделали вы: D но это сработало! спасибо

2. Вместо того, чтобы пытаться перебирать текстовое содержимое JTextArea и записывать это в Writer , я передал Writer в JTextArea и позволил ему обработать это…

3. о .. хм, если я сделаю это наоборот, будет ли то же самое? вместо использования FileWriter я буду использовать FileReader?

4. Да, JTextArea имеет read метод

Ответ №2:

Вам нужно использовать System.lineSeparator() для записи новой строки в текстовый файл.

Итак, попробуйте что-то вроде следующего

 if(txtContent.getText().contains("rn"))
            writer.write(System.lineSeparator());