所以我首先通过p个对象创建了一个人物
box1:
public static Person[] createPersons(int p) {
people = new Person[p];
for(int i=0; i < p; i++) {
people[i] = new Person("Mr. Persons" + i, 20 + i, 'M');
}
menuSelection();
return people;
}
我将其写入文本文件:
box2:
public static void writePersons (Person[] person, String filePerson){
if (people != null) {
try (FileOutputStream fs = new FileOutputStream(filePerson)) {
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeInt(p);
os.writeObject(people);
os.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(p+" Person written successfully to " + filePerson);
} else {
System.out.println("Nothing to write.");
}
menuSelection();
}
所以在java中它看起来像这样:
box3:
Mr. Person0 20 M
Mr. Person1 21 M
Mr. Person2 22 M
Mr. Person3 23 M
Mr. Person4 24 M
Mr. Person5 25 M
但是当我打开我的文本文件时,它看起来像这样:
¬í w ur [LPerson;4Ýd
—ì-b xp sr Person I ageC genderL namet Ljava/lang/String;xp Mt
Mr. Person0sq ~ Mt
Mr. Person1sq ~ Mt
Mr. Person2sq ~ Mt
Mr. Person3sq ~ Mt
Mr. Person4sq ~ Mt
Mr. Person5
如何再次读出这个文本文件?并将其放入java中的样式(参见方框3)
答案 0 :(得分:1)
您可以这样写:
PrintWriter printWriter = new PrintWriter ("D:\\test.txt");
printWriter.println (p.getName());
printWriter.print (p.getSex());
printWriter.print (p.getAge());
printWriter.close ();
答案 1 :(得分:0)
你需要编写字符串而不是对象, 最好创建一个toString()方法并相应地使用。
答案 2 :(得分:0)
为了使用writeObject
读取您使用Java写入文件的对象,您必须在文件上使用readObject
(ObjectInputStream
)。
推荐documentation关于ObjectOutputStream
:
writeObject方法用于将对象写入流。任何对象,包括字符串和数组,都是用writeObject编写的。可以将多个对象或基元写入流。必须从相应的ObjectInputstream中读取对象,其类型和顺序与写入时的顺序相同。
因此,在您的情况下,您必须阅读以下内容:
try (FileInputStream fis = new FileInputStream(filePerson)) {
ObjectInputStream ois = new ObjectInputStream(fis);
int p = ois.readInt();
Person[] persons = new Person[p];
for (int i = 0; i < p; i++) {
persons[i] = (Person)ois.readObject();
}
ois.close();
}
答案 3 :(得分:-1)
不要使用ObjectOutStream。那是计算机术语。你只需要PrintWriter。