【问题标题】:Writing textFields/textArea to text file将 textFields/textArea 写入文本文件
【发布时间】:2013-12-09 12:48:37
【问题描述】:

所以在小程序中,我需要在按下提交按钮时将两个文本字段和文本区域中的值写入文本文件。文本读取得很好,但没有记录到文本文档中。

nameFieldtopicField 是我的两个文本字段,paragraphArea 是我的文本区域。 Topics.txt 是我的 Java 包中的空白文本文件。

   JButton submitButton = new JButton("SUBMIT");
    submitButton.setSize(100, 30);
    submitButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {


            String name = nameField.getText();
            String topic = topicField.getText();
            String paragraph = paragraphArea.getText();


            String fileWrite = "Topics.txt";

            try {
                FileWriter fileWriter =
                    new FileWriter(fileWrite);

                BufferedWriter bufferedWriter =
                    new BufferedWriter(fileWriter);

                bufferedWriter.newLine();
                bufferedWriter.write(name);
                bufferedWriter.newLine();
                bufferedWriter.write(topic);
                bufferedWriter.newLine();
                bufferedWriter.write(paragraph);
                bufferedWriter.newLine();

                bufferedWriter.close();
            }
            catch(IOException ex) {
                System.out.println(
                    "Error writing to file '"
                    + fileWrite + "'");
            }

        }
     });
add(submitButton);
}
}

我真的不明白我在这里做错了什么。任何帮助将不胜感激。

编辑: 我发现问题出在哪里,它记录到主题文档的 bin 文件夹副本,而不是 src。

【问题讨论】:

  • 是否抛出异常?
  • 尝试使用文本文件创建一个新的 Java.File 实例,然后在 FileWriter 的构造函数中使用它。文件输出文件 = 新文件(文件写入); FileWriter fileWriter = new FileWriter(outputFile);
  • 一点也不。控制台是空白的,我已经用一些 System.out.prinln 进行了测试,它肯定是在读取文本字段和区域。
  • @Dimfish 这适用于我的机器,Topics.txt 肯定在根目录中吗?
  • 它在里面,我仔细检查了一遍,甚至还做了一个新的。打算试试 Mattee 的小程序特权建议。

标签: java swing file-io textarea textfield


【解决方案1】:

尝试使用打印写入器而不是文件写入器和缓冲写入器。

        try {
            PrintWriter printWriter = new PrintWriter("Topics.txt");
        } catch (FileNotFoundException ex) {
            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
        }

然后要保存到文件,只需使用'println'

printWriter.println(name);
printWriter.println(topic);
printWriter.println(paragraph);

printWriter.close();

我不确定是 PrintWriter 还是 FileWriter 更好,但 PrintWriter 对我有用!

【讨论】:

    【解决方案2】:

    试试这个:

    try {
        FileWriter fileWriter =
            new FileWriter(fileWrite);
    
        BufferedWriter bufferedWriter =
            new BufferedWriter(fileWriter);
    
        bufferedWriter.newLine();
        bufferedWriter.write(name);
        bufferedWriter.newLine();
        bufferedWriter.write(topic);
        bufferedWriter.newLine();
        bufferedWriter.write(paragraph);
        bufferedWriter.newLine();
    
        }
        catch(IOException ex) {
                System.out.println(
                    "Error writing to file '"
                    + fileWrite + "'");
        }
        finally {
            if (bufferedWriter != null) {
                bufferedWriter.close();
            }
        }
    

    【讨论】:

      【解决方案3】:

      这可能是因为您的应用程序是一个小程序吗?有一个 Oracle 页面here 对小程序进行了以下说明:“它们无法访问客户端资源,例如本地文件系统、可执行文件、系统剪贴板和打印机。”

      如果是这种情况,我认为您可能需要一个特权小程序。

      【讨论】:

        【解决方案4】:

        代码运行良好,只是在不同的地方读写。

        【讨论】:

          猜你喜欢
          • 2013-08-01
          • 1970-01-01
          • 2016-04-19
          • 2022-12-13
          • 1970-01-01
          • 2015-04-08
          • 2017-09-27
          • 2018-08-23
          • 1970-01-01
          相关资源
          最近更新 更多