Как сохранить данные в текстовом файле, используя файл произвольного доступа, и обновить эти данные?

Я запутался, как я могу сохранить свои данные, например, у меня есть (единый идентификатор студента, имя, фамилия), единственный идентификатор студента - целое число, я хочу сохранить эти данные в текстовый файл, когда я нажимаю (AddButtton), а затем я хочу обновить их данные, когда я нажимаю (UpdateButton), данные сохраняются, но я использую Vector Array каждый раз, когда сохраненные данные в скобках появляются в файле, а когда нажимаете (UpdateButton), данные не возвращаются в мой TextField для обновления,

     class BtnListenerAdd implements ActionListener{
      public void actionPerformed(ActionEvent a) {

        if (a.getSource()==btnAdd){
            Student s=new Student(tfname.getText(),tfsurname.getText());
            s.number=Integer.parseInt(tfno.getText());
            myVector.add(s);
               //System.out.println(s);

            try{
                java.io.RandomAccessFile raf =
                               new java.io.RandomAccessFile("e:\\random.txt", "rw");


                    for (int i = 0; i < myVector.size(); i++) {
                      raf.writeChars(myVector.toString());
                    }

                    raf.seek(0);
                    while (raf.getFilePointer() < raf.length()) {
                      System.out.println(raf.readChar());
                    }

                raf.close();
            }catch(Exception e){
                System.out.println( e.toString() );
            }
        }

        if (a.getSource()==btnList){
            ta1.setText("");
            for (Student s : myVector) {
                ta1.append(s.toString()+ "\n"); 
            }
        }           
        }

     }


  class BtnListenerUpdate implements ActionListener{

    public void actionPerformed(ActionEvent s) {

        if (s.getSource()==btnUpdate){
            Student l=new Student(tfname.getText(),tfsurname.getText());
            l.number=Integer.parseInt(tfno.getText());
            myVector.add(l);


            try{
                java.io.RandomAccessFile raf = 
                              new java.io.RandomAccessFile("e:\\random.txt", "rw");

                for(int i=0; i <myVector.size(); i++) {
                    raf.writeChar(myVector.size());
                }

                raf.seek(0);
               int no= raf.readInt();
               tfno.setText(no +  "");
               System.out.println(no);


               String nam = "";
                for(int x=0; x<50; x++){
                    nam += raf.readChar();
                }


                nam = "";
                for(int x=0; x<50; x++){
                    nam += raf.readChar();
                }


            }catch(Exception e){
                System.out.println( e.toString() );
            }
        }

    }


  }

2 ответа

Я бы порекомендовал вам использовать BufferedWriter, если вы не создаете или не обновляете такое количество записей. Если да, я бы посоветовал вам использовать базу данных, такую ​​как Mongo или MySQL.

И вы также можете начать тестировать свой код с данными UTF-8. Умлауты и тому подобное.:)

Я предлагаю вам написать небольшое количество кода, который вы понимаете, прежде чем писать больше. Чем больше кода вы пишете, тем более запутанным становится то, что сложнее его исправить.

Я бы снова начал писать другой класс, который вы тестируете модульно, начните с самого простого кода, который вы можете написать, и когда это сработает, добавьте еще немного и протестируйте его.

К сожалению, часть написанного вами кода - просто бессмыслица, поэтому я бы не стал его использовать повторно.

Другие вопросы по тегам