简体   繁体   English

无法将输入从 JTextField 存储到文件编写器

[英]Can't store inputs from JTextField to filewriter

I'm trying to make a phone directory where the user has to enter multiple inputs using JTextField.我正在尝试创建一个电话目录,用户必须使用 JTextField 在其中输入多个输入。 I also have a search option that will search the inputted name from the directory in filewriter and I just can't seem to store my inputs in the filewriter.我还有一个搜索选项,可以从 filewriter 的目录中搜索输入的名称,但我似乎无法将我的输入存储在 filewriter 中。 This is my initial code这是我的初始代码

public static void main(String[] args) throws Exception {
    Scanner scan = new Scanner(System.in);
    int menu = 0;
    
    boolean quit = false;
    do{
    String input = JOptionPane.showInputDialog(null,"Telephone Directory Management System"
            + "\n1. Add a Student"
            + "\n2. Search"
            + "\n3. Sort Data"
            + "\n4. List of all data"
            + "\n5. Exit"
            + "\n\nPlease enter your choice:","Main Menu",JOptionPane.QUESTION_MESSAGE);

    menu = Integer.parseInt(input);
        
        switch (menu) {
            case 1:
                JTextField student = new JTextField();
                JTextField name = new JTextField();
                JTextField address = new JTextField();
                JTextField phone = new JTextField();
                
                Object[] fields = {
                    "Enter Student ID:",student,
                    "Enter Name:",name,
                    "Enter Address:",address,
                    "Enter Phone No.:",phone};
                int add = JOptionPane.showConfirmDialog(null,fields,"Add a Student",JOptionPane.OK_CANCEL_OPTION);

                if (add == JOptionPane.OK_OPTION)
                {

                    String student1 = student.getText();
                    String name1 = name.getText();
                    String address1 = address.getText();
                    String phone1 = phone.getText();
                    
                    FileWriter fw = new FileWriter(new File("directory.txt"), true);
                    BufferedWriter out = new BufferedWriter(fw);
                    out.write(student1 + " " + name1 + " " + address1 + " " + phone1);
                    out.newLine();
                }
                break;
            case 2:
                input = JOptionPane.showInputDialog(null,"Enter name to search information:","Search",JOptionPane.OK_CANCEL_OPTION);
                File f = new File("directory.txt");
                try {
                    BufferedReader freader = new BufferedReader(new FileReader(f));
                    String s;
                    while ((s = freader.readLine()) != null) {
                        String[] st = s.split(" ");
                        String id = st[0];
                        String nm = st[1];
                        String add1 = st[2];
                        String phoneNo = st[3];
                        if (input.equals(nm)) {
                            JOptionPane.showMessageDialog(null,"Student ID: "+id+"\nName: "+nm+"\nAddress: "+add1+"\nPhone No.: "+phoneNo+"","Information",JOptionPane.QUESTION_MESSAGE);
                        }
                    }
                    freader.close();
                } catch (Exception e) {
                }

                break;

I tried using scanner before and it does store my inputs but I need to use JOptionPane in this one.我之前尝试过使用扫描仪,它确实存储了我的输入,但我需要在这个中使用 JOptionPane。 Thank you so much to anyone that can help me in this.非常感谢任何可以帮助我的人。

You should close the BufferedWriter after writing into it, like this你应该在写入后关闭 BufferedWriter,就像这样

out.close()

If you don't do this the BufferedWriter won't flush what you've written into it to the underlying stream.如果您不这样做,BufferedWriter 不会将您写入其中的内容刷新到底层流中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM