2015-11-25 5 views
0

Я создал графический интерфейс в Netbeans, чтобы получить входные данные от пользователя для определенных полей. Я не понимаю, как сохранить текст с помощью кнопок JTextField и Radio, которые выбраны в текстовый файл.Сохраните данные 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); 
    } 
} 

sccreenshot

ответ

0

Между

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

и

writer.close(); 

вы должны на самом деле писать, используя метод write FileOutputStream в.

Я думаю, что то, что вы хотите сделать, это:

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 (условно ссылки как ФОС для ради ленивости) получает завернуты.

Существует два семейства классов для записи файлов на Java. Читатели/Писатели и потоки. Ваш fos - это поток, поэтому он имеет дело с реализацией системы и пишет байты или целые числа, между тем, что BufferedWritter (bw для ленивости) имеет дело с написанием объектов и базовыми типами. С упаковкой мы получаем лучшее из обоих миров, обработку высокого уровня и низкую функциональность.

+0

Когда я попробовал, что я получаю ошибку *** не подходящий метод нашел для записи (String) метод OutputStream.write (интермедиат) не применяется (аргумент несоответствия; строка не может быть преобразована в целое) метод OutputStream.write (byte []) не применимо (несоответствие аргумента, строка не может быть преобразована в байт []) метод FileOutputStream.write (int) не применим (несоответствие аргумента; строка не может быть преобразована в int) метод FileOutputStream.write (byte []) не применимо (несоответствие аргумента; строка не может быть преобразована в байт []) Redundant String.toString() –

+0

Теперь он должен работать для вашего конкретного примера. Другим способом должно быть кастинг в байтах, но это делается с помощью bw внутри (безболезненно и оптимизировано). –

Смежные вопросы