【问题标题】:Save JTextField and Selected Radio Button Data To A Text File将 JTextField 和选定的单选按钮数据保存到文本文件
【发布时间】:2015-11-25 17:57:39
【问题描述】:

我在 Netbeans 中创建了一个 GUI,以从用户那里获取某些字段的输入。我不明白如何将所选 JTextField 和单选按钮中的文本保存到文本文件中。

我附上了用户表单的图片。

一旦按下“确定”按钮,用户就会得到一个对话框来保存文件。

目前,我可以将文件保存为文本文件。但是文本文件中什么也没有出现。如何从每个文本字段和单选按钮中检索数据?

请帮忙,我尝试了很多解决方案,但都无法正常工作。

private void buttonOkActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:

    try{
        String filename = JOptionPane.showInputDialog(null, "Enter the name to be saved", "File Name", 1 );
        FileOutputStream writer = new FileOutputStream(filename+".dat");

        txtFirstName.getText().toString(); //Trying to get text from First Name field.

        writer.close();
        JOptionPane.showMessageDialog(null,"Saved Successfully");

   }catch (Exception e) {
       JOptionPane.showMessageDialog(null, e);
   }
}  

【问题讨论】:

    标签: java user-interface netbeans jdialog fileoutputstream


    【解决方案1】:

    之间

    FileOutputStream writer = new FileOutputStream(filename+".dat");
    

    writer.close();
    

    您实际上应该使用 FileOutputStream 的 write 方法进行编写。

    我认为你想做的是:

    FileOutputStream writer = null;
        try {
    
            FileOutputStream writer = new FileOutputStream(filename+".dat");
            OutputStreamWriter os = new OutputStreamWriter(writer);
            BufferedWriter bw = new BufferedWriter(os);
            bw.write(txtFirstName.getText().toString());
    
        } catch (FileNotFoundException ex) {
            Logger.getLogger(generafechas.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(generafechas.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            if(writer!=null)
                try {
                    writer.close();
            } catch (IOException ex) {
                Logger.getLogger(generafechas.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    

    在上面的代码中,您可以看到 FileOutputStream(为了懒惰,通常引用为 fos)被包装了。

    有两个类可以用 Java 编写文件。读取器/写入器和流。 您的 fos 是一个流,因此它处理特定于系统的实现并写入字节或整数,同时 BufferedWritter (出于懒惰考虑)处理写入对象和基本类型。通过包装,我们得到了两全其美,高级处理和低级功能。

    【讨论】:

    • 当我尝试时我得到一个错误 *** 没有找到适合 write(String) 方法的方法 OutputStream.write(int) is not applicable (argument mismatch; String cannot be convert to int) 方法OutputStream.write(byte[]) 不适用(参数不匹配;String 无法转换为 byte[])方法 FileOutputStream.write(int) 不适用(参数不匹配;String 无法转换为 int)方法 FileOutputStream.write( byte[]) 不适用(参数不匹配;String 无法转换为 byte[])冗余 String.toString()
    • 它现在应该适用于您的具体示例。另一种方法应该是转换为字节,但这是由 bw 在内部完成的(痛苦且优化)。
    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    相关资源
    最近更新 更多