如何将我的JtextArea中的所有文本输出到保存文件?

时间:2014-04-30 04:55:14

标签: java swing jtextarea fileoutputstream printstream

你好伙计堆叠器!我在为游戏创建适当的保存功能时遇到问题。我遇到的主要问题是捕获名为display的J文本区域内的所有数据。显示器反映了目前为止在游戏中所做的动作,并且在显示屏的顶部显示了#34;欢迎来到Togiz Kumalak"。

我的问题是,当我保存游戏时,它只会将第一行文本记录到文件而不是所有行。

一个例子是:

            Welcome to Togiz Kumalak
            Player 1 Cup 1
            Player 2 Cup 3

等等。保存文件时,只显示顶行。

这是我当前保存侦听器的代码。

class SaveListener implements ActionListener
 {
    String a = display.getText();

    JFileChooser myChooser= new JFileChooser();
    public void actionPerformed(ActionEvent event)
    {
        String fileName;
        myChooser.setCurrentDirectory(new File("."));
        myChooser.showSaveDialog(null);

        fileName = myChooser.getSelectedFile().getPath();

        try
        {
            OutputStream file = new FileOutputStream(fileName);
            PrintStream printStream = new PrintStream(file);
            printStream.print(a);
            printStream.close();


    /*  Version 11, 23.1.  Scroll pane and text area support when saving.  */


        }

        catch(IOException e)
        {
            System.out.println("Problem making or writing to an output stream.");
            System.out.println(e);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

使用JTextArea API的write(...)方法,而不是尝试创建自己的方法。

答案 1 :(得分:1)

  

..在为我的游戏创建正确的保存功能时遇到问题

考虑到“正确”这个词(我强调),我必须指出,保存/加载游戏的正确的方式是根据“游戏状态模型”而不是“游戏状态”模型粗略地翻译成文本行'。

根据数据的复杂性,可以通过多种方式保存游戏状态模型,但是应该使用非常不同的序列化方法(在代码中编码/解码数据的工作量较少),而不是使用此方法。