我很困惑如何保存我的数据,例如我hava(学生ID,姓名,姓氏)唯一的学生ID是整数,我想将这些数据保存到文本文件时我按(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() );
}
}
}
}
答案 0 :(得分:1)
您应该使用构造函数FileOutputStream(File file, boolean append)
,它能够以追加模式将流初始化为文件,从而将数据附加到文件末尾。
答案 1 :(得分:0)
您不应使用RandomAccessFile来存储文本。相反,它应该用于存储相等长度的记录。如果您想要做的只是将追加文本添加到文本文件的末尾,那么请按照@Jack推荐的答案 - 附加到文件(1+给他)。
我自己,我使用FileWriter,构造函数的append布尔参数设置为true(类似于Jack向你展示的方式),并将其包装在BufferedWriter中,可能由PrintWriter包装。然后,您可以使用println(...)
编写新行。
此外,括号可能在您的输出中,因为您告诉他们在那里。学生的toString()
方法是什么样的?有东西告诉我输出括号。从那种方法中摆脱它们。