逐行写入文本文件

Writing into textfile line by line

我正在尝试从 jtextarea 中写入文本,并且应该将其保存为文本文件,因为它 is.But 当 运行 文本在一行中写入的程序而不是按行写入时行。

例如:

我的输入:

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

    }
}

the texts is writing in a single line not writing line by line

Document只存储“\n”表示换行字符串。换行字符串因您使用的 OS 而异。一些编辑器足够聪明,可以识别多个换行符字符串,而其他编辑器则不能,所以你得到的是单行。

i am trying to write texts from jtextarea and should save it as a textfile

不要自己做 IO。

而是使用 JTextArea API 提供的 write(...) 方法。

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

            }
        });