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

Posted

技术标签:

【中文标题】无法将输入从 JTextField 存储到文件写入器【英文标题】:Can't store inputs from JTextField to filewriter 【发布时间】:2021-12-08 13:35:24 【问题描述】:

我正在尝试创建一个电话目录,用户必须在其中使用 JTextField 输入多个输入。我还有一个搜索选项,可以从文件写入器的目录中搜索输入的名称,但我似乎无法将我的输入存储在文件写入器中。这是我的初始代码

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;

我之前尝试过使用扫描仪,它确实存储了我的输入,但我需要在这个中使用 JOptionPane。非常感谢任何可以帮助我的人。

【问题讨论】:

【参考方案1】:

你应该在写入之后关闭 BufferedWriter,像这样

out.close()

如果您不这样做,BufferedWriter 不会将您写入其中的内容刷新到底层流中。

【讨论】:

嗨!我显然忘记了这个,拥有它之后,它仍然不会存储在目录中。我还尝试在 JTextfield 上使用扫描仪,但它只是继续运行,而 JOption 窗口无处可见。 你确定你在案例1的out.newLine()之后添加了out.close()并重新编译了吗?我在我的电脑上尝试了这个程序,在添加一个学生后,我在 directory.txt 文件中看到了这一行。 我尝试再次对其进行编码并删除目录以确保它现在可以正常工作!太谢谢你了兄弟。这对我来说真的很重要 没问题!如果可能的话,你能用向上的箭头将答案标记为有用吗?我不确定您作为问题的所有者看到了什么。谢谢你,祝你有美好的一天。

以上是关于无法将输入从 JTextField 存储到文件写入器的主要内容,如果未能解决你的问题,请参考以下文章

将文件路径拖放到 Java Swing JTextField

从文本文件读取到 JTextfield

如何从应用引擎将写入附加到谷歌云存储文件?

无法将新帐户信息写入 csv 文件

将 JTextField 输入限制为整数 [重复]

将 JTextField 输入限制为整数 [重复]