我做了一个NotePad程序。问题是它不以.txt格式保存,它保存为没有格式的文件。但它可以打开.txt文件。我该如何解决? 这是我的工作。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;
import java.io.*;
public class NotePad extends JFrame {
private JTextArea noteArea;
public static void main(String[] args) {
NotePad p = new NotePad();
p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p.setSize(500,300);
p.setVisible(true);
}
public NotePad() {
super("Java Notepad");
setLayout(new BorderLayout());
noteArea = new JTextArea("",20,20);
noteArea.setWrapStyleWord(true);
noteArea.setLineWrap(true);
Font font = new Font("sanserif", Font.BOLD,14);
noteArea.setFont(font);
JScrollPane scroller = new JScrollPane(noteArea);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
add(scroller,BorderLayout.CENTER);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem openMenu = new JMenuItem("Open");
openMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFileChooser openFile = new JFileChooser();
openFile.showOpenDialog(new NotePad());
loadFile(openFile.getSelectedFile());
}
});
JMenuItem saveMenu = new JMenuItem("Save");
saveMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFileChooser saveFile = new JFileChooser();
saveFile.showSaveDialog(new NotePad());
fileSaved(saveFile.getSelectedFile());
}
});
JMenuItem exitMenu = new JMenuItem("Close");
exitMenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
});
fileMenu.add(openMenu);
fileMenu.add(saveMenu);
fileMenu.add(exitMenu);
menuBar.add(fileMenu);
this.setJMenuBar(menuBar);
}
public void loadFile(File file) {
noteArea.setText("");
try {
BufferedReader read = new BufferedReader(new FileReader(file));
String line = null;
while((line =read.readLine())!=null) {
noteArea.append(line +"\n");
}
read.close();
}
catch (Exception e) {
System.out.println("Error " + e.toString());
}
}
public void fileSaved(File file) {
try {
PrintWriter writer = new PrintWriter(file);
String[] lines = noteArea.getText().split("\\n");
for (String ) {
writer.println(words);
}
writer.close();
} catch (Exception e) {
System.out.println("Error " + e.toString());
}
}
}
btw我无法发布我的问题,因为没有根据网站解释情景。所以那里。谢谢你的帮助
答案 0 :(得分:2)
您需要确保添加" .txt"如果输出文件名不存在,则扩展到输出文件名的末尾。 Java和Windows不会为你做这件事......
public void fileSaved(File file) {
String name = file.getPath();
if (!name.toLowerCase().endsWith(".txt")) {
name += ".txt";
file = new File(name);
}
//...
由于我没有检查用户是否提供了不同的扩展程序,这是非常繁重的,但我认为NotePad基本上做同样的事情:P
答案 1 :(得分:0)
每个文件名由两部分组成: - NAME和EXTENSION。 记事本默认情况下保存为.txt,但情况并非总是如此。
您需要将扩展名设为
public void fileSaved(File file) {
String name = file.getPath();
if (!name.toLowerCase().endsWith(".txt")) {
name += ".txt";
file = new File(name);
}
为了让它发挥作用。尝试一下。