#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());