我试图从jtextarea
编写文本并将其保存为文本文件。但是在运行程序时,文本写入一行而不是逐行写入。
例如:
我的意见:
abcd
eghi
asdasddkj
但是得到像这样的输出
abcdeghiasdasddkj
这是我的代码:
private void jMenuItem12ActionPerformed(java.awt.event.ActionEvent evt) {
try {
// TODO add your handling code here:
String text = jTextArea1.getText();
File file = new File("D:/sample.txt");
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pl=new PrintWriter(bw);
pl.println(text);
System.out.println(text);
pl.close();
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:4)
文本写在一行不是逐行写
Document
只存储" \ n"表示新的行字符串。新行字符串因您使用的操作系统而异。有些编辑很聪明,可以识别多个新的字符串字符串,有些则不是这样,你可以获得单行。
我正在尝试从jtextarea写入文本,并将其保存为文本文件
不要自己做IO。
而是使用write(...)
API提供的JTextArea
方法。
答案 1 :(得分:2)
camickr发布的答案是一个完美的解决方案。但是不需要使用开始和结束偏移方法。 JTextArea.wtite()将处理它。它甚至可以为你处理行分隔符。
对于所需的输出,你的actionPerformed()应该是这样的..
but1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
String text = jta.getText();
File file = new File("D:/sample.txt");
FileWriter fw;
try
{
fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
jta.write(bw);
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
});