Как сохранить данные в текстовом файле, используя файл произвольного доступа, и обновить эти данные?
Я запутался, как я могу сохранить свои данные, например, у меня есть (единый идентификатор студента, имя, фамилия), единственный идентификатор студента - целое число, я хочу сохранить эти данные в текстовый файл, когда я нажимаю (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. Умлауты и тому подобное.:)
Я предлагаю вам написать небольшое количество кода, который вы понимаете, прежде чем писать больше. Чем больше кода вы пишете, тем более запутанным становится то, что сложнее его исправить.
Я бы снова начал писать другой класс, который вы тестируете модульно, начните с самого простого кода, который вы можете написать, и когда это сработает, добавьте еще немного и протестируйте его.
К сожалению, часть написанного вами кода - просто бессмыслица, поэтому я бы не стал его использовать повторно.