Bufferedwriter写入但没有行间距

时间:2013-11-30 13:10:46

标签: java swing jtextarea bufferedwriter

我正在使用JTextArea。使用缓冲写入器写入文件时,它无法正确写入。

这是我在现场写的

 Hello
 My name is alexander
 Goodye!

我得到的是

 HelloMy name is alexanderGoodbye!

有人可以帮忙吗?这是我的代码。

package main;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class TextEditor {
static final JTextArea textArea = new JTextArea(20, 50);
static final JFileChooser saveDirectory = new JFileChooser("save");
public static void start(){
    JFrame f = new JFrame("Text editor");
    JButton saveButton = new JButton("Save");
    JButton loadButton = new JButton("load");
    JPanel editor = new JPanel();
    JPanel buttons = new JPanel();

    buttons.add(saveButton);
    buttons.add(loadButton);

    //Button setup
    saveButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            save();
        }
    });
    //END

    editor.add(textArea);

    f.setLayout(new BorderLayout(3,3));
    f.add(buttons, BorderLayout.PAGE_START);
    f.add(textArea);

    f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    f.pack();
    f.setVisible(true);

}
public static void save(){
    File dir;
    saveDirectory.showDialog(null, "Save file");
    dir = saveDirectory.getSelectedFile();
    System.out.println(dir);

    try {
        FileWriter fw = new FileWriter(dir);
        BufferedWriter bw = new BufferedWriter(fw);

        bw.write(textArea.getText());
        bw.close();
        System.out.println("Done!");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, e);
    }
}
}

非常感谢任何帮助。

编辑1: 已安装的np ++和文本文件完美显示。为什么以及如何使文件与windows标准notepad.exe兼容

2 个答案:

答案 0 :(得分:0)

您错过了line-terminator。尝试:

textArea.write(bw);

this possible duplicate question中解释了这种技术。

答案 1 :(得分:0)

很可能你是在Windows记事本下打开文件,这需要CRLF结束。尝试使用支持CR行结尾的Notepad ++打开文件。该文件看起来应该没问题。

在编写textarea内容之前尝试String.replace("\n", "\r\n")以使文件在记事本中可读。