我正在使用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兼容
答案 0 :(得分:0)
答案 1 :(得分:0)
很可能你是在Windows记事本下打开文件,这需要CRLF结束。尝试使用支持CR行结尾的Notepad ++打开文件。该文件看起来应该没问题。
在编写textarea内容之前尝试String.replace("\n", "\r\n")
以使文件在记事本中可读。