【问题标题】:Writing into textfile line by line逐行写入文本文件
【发布时间】:2015-03-11 00:58:28
【问题描述】:

我正在尝试从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);

    }
}

【问题讨论】:

标签: java swing file-io jtextarea filewriter


【解决方案1】:

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

            }
        });   

【讨论】:

    【解决方案2】:

    文字是单行写的,不是逐行写的

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

    我正在尝试从 jtextarea 写入文本,应该将其保存为文本文件

    不要自己做 IO。

    改为使用JTextArea API 提供的write(...) 方法。

    【讨论】:

    • 好的,但是我现在如何修改我的代码,使其能够逐行写入文件
    • @AbooSidhu,阅读 JTextArea API。有一些方法,如 getLineCount()、getOffsetStart()、getOffsetEnd()、getText(..),它们可以让您从 Document 中一次获取一行文本。因此,您需要使用上述所有信息创建自己的循环。
    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多