Когда я запускаю этот код, файл хорошо сохраняется, но я думаю, что при вводе постоянно появляются ошибки. Кажется, нет проблем с подключением FileStream и ObjectStream, поэтому мне интересно, что за проблема с кодом, который я сделал. Как напечатать имя класса в файле на консолях? Спасибо за чтение и извините, что я не очень хорошо владею английским языком sh
import java.io.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Person implements Serializable{
String name;
String tel;
int age;
public Person(String name, String tel, int age) {
this.name = name;
this.tel = tel;
this.age = age;
}
public String toString() { return "{"+name+","+tel+","+age+"}";}
}
public class Address extends JFrame{
JLabel l1,l2,l3;
JButton b1,b2,b3,b4,b5;
JTextField t1,t2,t3;
JPanel p1,p2;
Vector<Person> ps = new Vector<Person>();
public Address() {
setSize(600,150);
setTitle("Address");
p1 = new JPanel();
l1 = new JLabel("이름:");
t1 = new JTextField(15);
l2 = new JLabel("전화번호:");
t2 = new JTextField(15);
l3 = new JLabel("나이:");
t3 = new JTextField(15);
p1.add(l1);
p1.add(t1);
p1.add(l2);
p1.add(t2);
p1.add(l3);
p1.add(t3);
p1.setLayout(new GridLayout(1,0));
p2 = new JPanel();
b1 = new JButton("입력");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ps.add(new Person(t1.getText(), t2.getText(), Integer.parseInt(t3.getText()) ));
}
});
b2 = new JButton("자료읽기");
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ObjectInputStream in = null;
try {
in = new ObjectInputStream(new FileInputStream("C:\\Users\\조의수\\Desktop\\JavaTest\\Person.dat"));
Person per = (Person)in.readObject();
System.out.println(per);
in.close();
}catch(ClassNotFoundException | IOException e1) {
e1.printStackTrace();
}
}
});
b3 = new JButton("자료저장");
b3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ObjectOutputStream out = null;
try {
for(Person p : ps) {
out = new ObjectOutputStream(new FileOutputStream("C:\\Users\\조의수\\Desktop\\JavaTest\\Person.dat"));
out.writeObject(ps);
out.flush();
}
out.close();
} catch(IOException e2) {
e2.printStackTrace();
}
}
});
b4 = new JButton("자료찾기");
b4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
b5 = new JButton("종료");
b5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
p2.add(b1);
p2.add(b2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.setLayout(new GridLayout(1,0));
add(p1, BorderLayout.NORTH);
add(p2, BorderLayout.SOUTH);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) throws IOException {
new Address();
}
}