Как читать с пользовательского ввода в Java и записывать его в файл

Я хочу создать простое автономное приложение, которое будет принимать некоторые данные от пользователя (некоторые числа и математические функции f (x, y …)) и записать их в файл. Затем с помощью этого файла я запустим команду.

Основные ингредиенты, которые мне нужны:

– JTextArea для ввода пользователей.

– ButtonHandler / ActionListener и запись ввода в файл (txt)

– ButtonHandler / ActionLister для выполнения команды

Каков наилучший способ сделать это?

Текущий текущий код, который у меня есть (в основном игрушка) – который ничего не пишет, просто выполняет – это:

import java.applet.*; import java.lang.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.Dialog; import java.io.IOException; import java.io.InputStream; import java.io.*; import java.util.*; import java.io.BufferedWriter; public class Runcommand3 { public static void main(String[] args) throws FileNotFoundException, IOException { //JApplet applet = new JApplet(); //applet.init(); final JFrame frame = new JFrame("Change Backlight"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(null); frame.add(panel); JButton button = new JButton("Click me to Run"); button.setBounds(55,100,160,30); panel.add(button); frame.setSize(260,180); frame.setVisible(true); //This is an Action Listener which reacts to clicking on the button button.addActionListener(new ButtonHandler()); } } class ButtonHandler implements ActionListener{ public void actionPerformed(ActionEvent event){ double value = Double.parseDouble( JOptionPane.showInputDialog("please enter backlight value")); //File theFile = new File("thisfile.txt"); //theFile.write(value); String command = "xbacklight -set " + value; try{Runtime run = Runtime.getRuntime(); Process pr = run.exec(command);} catch(IOException t){t.printStackTrace();} } } 

В приведенном выше примере, как я могу написать «значение» в файл? Затем, как я могу добавить больше ввода (больше текстовых полей)? Могу ли я сделать это в одном classе или мне нужно больше? Моя путаница приходит (главным образом, но не только) из того факта, что внутри classа ButtonHandler я НЕ могу определить любые другие объекты (т. Е. Открывать и записывать файлы и т. Д.).

Так я напишу в файл. Я позволю вам преобразовать этот код в свой графический интерфейс для практики. Подробнее о BufferedWriter и FileWriter

 import java.io.BufferedWriter; import java.io.FileWriter; import java.util.Scanner; public class Files { public static void main(String args[]){ System.out.print("Enter Text: "); Scanner scan = new Scanner(System.in); String text = scan.nextLine(); FileWriter fWriter = null; BufferedWriter writer = null; try { fWriter = new FileWriter("text.txt"); writer = new BufferedWriter(fWriter); writer.write(text); writer.newLine(); writer.close(); System.err.println("Your input of " + text.length() + " characters was saved."); } catch (Exception e) { System.out.println("Error!"); } } } 

Для вашего второго вопроса вы можете рассмотреть возможность использования JTextField в JFrame для ввода пользователем строк вместо JOptionPane. Это просто текстовое поле, и вы можете добавлять содержимое windows в файл каждый раз при нажатии кнопки:

 public static void main(String[] args) { JTextField myTextField = new JTextField(); // Your code, set size and position of textfield panel.add(myTextField); } class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent event) { String text = myTextField.getText(); myTextField.setText(""); new BufferedWriter(new FileWriter("text.txt")).write(text).newLine().close(); // the rest of your code } }