Home > OS >  Can't store inputs from JTextField to filewriter
Can't store inputs from JTextField to filewriter

Time:10-22

I'm trying to make a phone directory where the user has to enter multiple inputs using 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. 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. Thank you so much to anyone that can help me in this.

CodePudding user response:

You should close the BufferedWriter after writing into it, like this

out.close()

If you don't do this the BufferedWriter won't flush what you've written into it to the underlying stream.

  • Related