Java程序不保存" .txt"的内容文件

时间:2016-03-04 20:14:31

标签: java swing

我正在使用Java中的文本编辑器作为一个有趣的项目。当我导出项目时,我将可执行的JAR文件转换为" .exe"这样我就可以将文本编辑器设置为默认程序来打开" .txt"文件。我可以运行" .exe"并写入文本,然后保存文件,文件保存,但当我尝试用文本编辑器打开文件时,不保存文件的内容;但是,我可以用记事本打开同一个文件,并显示文件的内容。该文件在Eclipse中保存得很好。当我尝试使用文本编辑器打开它们时,我需要修复哪些文件内容?

这是我的代码:

public class Open extends JFrame implements KeyListener {

    JPanel panel = new JPanel();
    JTextArea textArea = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(textArea);

    JMenuBar menuBar = new JMenuBar();
    JMenu menu;
    JMenuItem item;
    Font systemFont;

    public Open() {

        systemFont = new Font("Times New Roman", Font.PLAIN, 20);

        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(false);
        textArea.setFont(systemFont);
        panel.setLayout(new BorderLayout());
        panel.add(scrollPane);
        add(panel);

        menu = new JMenu("File");
        item = new JMenuItem("Save As");

        item.setAccelerator(KeyStroke.getKeyStroke('S', Toolkit.getDefaultToolkit ().getMenuShortcutKeyMask()));

        item.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {

                JFileChooser JFC = new JFileChooser();
                File fileName = new File("");
                BufferedWriter writer = null;

                try {

                    int rVal = JFC.showSaveDialog(Open.this);
                    if(rVal == JFileChooser.APPROVE_OPTION) {

                        writer = new BufferedWriter(new FileWriter(JFC.getSelectedFile()));
                        writer.write(textArea.getText());

                    }
                } catch(Exception e) {
                    e.printStackTrace();
                } finally {
                    if(writer != null) {
                        try {
                            writer.close();
                        } catch(IOException e) {
                            e.printStackTrace();
                        }

                    }

                }

            }

        });

        menu.add(item);
        menuBar.add(menu);

        menu = new JMenu("Edit");
        item = new JMenuItem("Undo");

        menu.add(item);

        menu.add(item);


        menuBar.add(menu);



        add("North", menuBar);


        setLookAndFeel();       
        frameDetails("Text Editor");

    }

    public void frameDetails(String title) {

        setSize(700, 500);
        setLocationRelativeTo(null);
        setTitle(title);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public void setLookAndFeel() {

        try {

UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
            SwingUtilities.updateComponentTreeUI(this);

        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {

        Open editor = new Open();

    }

}

以下是使用保存按钮的代码:

 item.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent ae) {

        JFileChooser JFC = new JFileChooser();
        File fileName = new File("");
        BufferedWriter writer = null;

            try {

                int rVal = JFC.showSaveDialog(Open.this);
                if(rVal == JFileChooser.APPROVE_OPTION) {

                    writer = new BufferedWriter(new FileWriter(JFC.getSelectedFile()));
                    writer.write(textArea.getText());

                }
            } catch(Exception e) {
                e.printStackTrace();
            } finally {
                if(writer != null) {
                    try {
                        writer.close();
                    } catch(IOException e) {
                        e.printStackTrace();
                    }

                }

            }

        }

    });

2 个答案:

答案 0 :(得分:1)

您永远不会阅读文本文件。为此,请使用类似这样的内容

public void loadFile(JTextArea area, String path, String file)
{
    try
    {
        area.read(new FileReader(path + file), "Default");
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}

注意:您不必在方法中使用此功能。您可以使用try - catch代码

答案 1 :(得分:0)

要充当默认文本编辑器,程序需要接受文件名作为main(String [] args)的参数。它应验证文件是否存在,然后打开它,读取其内容并关闭它。

此外,当您保存文件时,您应该先将旧版本重命名为“name.bak”或“name~”,然后再使用新版本覆盖它,以防在保存期间出现问题。