将 textFields/textArea 写入文本文件

Posted

技术标签:

【中文标题】将 textFields/textArea 写入文本文件【英文标题】:Writing textFields/textArea to text file 【发布时间】: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 的小程序特权建议。 【参考方案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】:

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

【讨论】:

以上是关于将 textFields/textArea 写入文本文件的主要内容,如果未能解决你的问题,请参考以下文章

c#读取文本文档实践3-写入到文本本文档

在一页上的文本区域中写入,在另一页中显示文本数据[关闭]

如何用fortran 在文本文件最后写入内容

使用 Javascript 在文本区域内写入

将文本行写入R中的文件

RandomAccessFile写入时中文乱码解决方案