Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JTextField和所选单选按钮数据保存到文本文件中_Java_User Interface_Netbeans_Jdialog_Fileoutputstream - Fatal编程技术网

Java 将JTextField和所选单选按钮数据保存到文本文件中

Java 将JTextField和所选单选按钮数据保存到文本文件中,java,user-interface,netbeans,jdialog,fileoutputstream,Java,User Interface,Netbeans,Jdialog,Fileoutputstream,我已经在Netbeans中创建了一个GUI,用于从用户处获取特定字段的输入。我不明白如何将选中的JTextField和单选按钮中的文本保存到文本文件中 我在下面附上了用户表单的图片 按下“确定”按钮后,用户将获得一个对话框来保存文件 目前,我可以将文件保存为文本文件。但文本文件中没有显示任何内容。如何从每个文本字段和单选按钮检索数据 请帮忙,我尝试了很多解决方案,但都没有正常工作 private void buttonOkActionPerformed(java.awt.event.Action

我已经在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);
   }
}  

介于

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

实际上,您应该使用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是一个流,因此它处理特定于系统的实现并写入字节或整数,而BufferedWriter(为了懒散起见,bw)处理写入对象和基本类型。通过包装,我们得到了两个方面的最佳效果,即高级处理和低级功能。

当我尝试时,我得到了一个错误***没有为write(String)方法OutputStream找到合适的方法。write(int)不适用(参数不匹配;String无法转换为int)方法OutputStream.write(字节[])不适用(参数不匹配;字符串不能转换为字节[])方法FileOutputStream。写入(int)不适用(参数不匹配;字符串不能转换为int)方法FileOutputStream。写入(字节[])不适用(参数不匹配;字符串不能转换为字节[])Redundant String.toString()对于您的特定示例,它现在应该可以工作了。另一种方法应该是对字节进行强制转换,但这是由bw内部完成的(无痛苦且经过优化)。
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);
        }
    }