如何判断是否读取到文件的结尾呢?
代码如下:
class Student implements Serializable{
private static String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}public class ObjectInputSteamTest { public static void main(String[] args) throws FileNotFoundException {
Student s1 = new Student("1001","张三");
Student s2 = new Student("1002","李四");
try {
FileOutputStream outFile= new FileOutputStream("b.txt");
ObjectOutputStream outObj = new ObjectOutputStream(outFile);
outObj.writeObject(s1);
outObj.writeObject(s2);
outObj.flush();
//这里已经把2个java类(Student)实例写入到b.txt文件中了 FileInputStream inFile = new FileInputStream("b.txt");
ObjectInputStream inObj = new ObjectInputStream(inFile);
try {
Object obj = inObj.readObject();
//这里只能从b.txt文件中读取一个类,另外的类如何读取呀? System.out.println(obj);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
} }}
代码如下:
class Student implements Serializable{
private static String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}public class ObjectInputSteamTest { public static void main(String[] args) throws FileNotFoundException {
Student s1 = new Student("1001","张三");
Student s2 = new Student("1002","李四");
try {
FileOutputStream outFile= new FileOutputStream("b.txt");
ObjectOutputStream outObj = new ObjectOutputStream(outFile);
outObj.writeObject(s1);
outObj.writeObject(s2);
outObj.flush();
//这里已经把2个java类(Student)实例写入到b.txt文件中了 FileInputStream inFile = new FileInputStream("b.txt");
ObjectInputStream inObj = new ObjectInputStream(inFile);
try {
Object obj = inObj.readObject();
//这里只能从b.txt文件中读取一个类,另外的类如何读取呀? System.out.println(obj);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
} }}
import java.io.*;class Student implements Serializable{
private static String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}}public class ObjectInputSteamTest { public static void main(String[] args) throws FileNotFoundException {
Student s1 = new Student("1001","张三");
Student s2 = new Student("1002","李四"); try {
FileOutputStream outFile= new FileOutputStream("resources/out/b.txt");
ObjectOutputStream outObj = new ObjectOutputStream(outFile);
outObj.writeObject(s1);
outObj.writeObject(s2);
outObj.flush();
outObj.close();
//这里已经把2个java类(Student)实例写入到b.txt文件中了
FileInputStream inFile = new FileInputStream("resources/out/b.txt");
ObjectInputStream inObj = new ObjectInputStream(inFile);
try { Student stu1 = (Student)inObj.readObject();
Student stu2 = (Student)inObj.readObject();
//这里只能从b.txt文件中读取一个类,另外的类如何读取呀?
// 保证inObj调用readObject()的顺序跟程序之前写入的顺序一致就可以读出
// 无法判定是否已经到文件结尾;
System.out.println(stu1);
System.out.println(stu2); } catch (ClassNotFoundException e) { e.printStackTrace();
} inObj.close();
} catch (IOException e) {
e.printStackTrace();
} }}
private static String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}}public class ObjectInputSteamTest { public static void main(String[] args) throws FileNotFoundException {
Student s1 = new Student("1001","张三");
Student s2 = new Student("1002","李四"); try {
FileOutputStream outFile= new FileOutputStream("resources/out/b.txt");
ObjectOutputStream outObj = new ObjectOutputStream(outFile);
outObj.writeObject(s1);
outObj.writeObject(s2);
outObj.flush();
outObj.close();
//这里已经把2个java类(Student)实例写入到b.txt文件中了
FileInputStream inFile = new FileInputStream("resources/out/b.txt");
ObjectInputStream inObj = new ObjectInputStream(inFile);
try { Student stu1 = (Student)inObj.readObject();
Student stu2 = (Student)inObj.readObject();
//这里只能从b.txt文件中读取一个类,另外的类如何读取呀?
// 保证inObj调用readObject()的顺序跟程序之前写入的顺序一致就可以读出
// 无法判定是否已经到文件结尾;
System.out.println(stu1);
System.out.println(stu2); } catch (ClassNotFoundException e) { e.printStackTrace();
} inObj.close();
} catch (IOException e) {
e.printStackTrace();
} }}
Student stu1 = (Student)inObj.readObject();
Student stu2 = (Student)inObj.readObject();或者
Object obj = null;
try {
while((obj = inObj.readObject()) != null) {
System.out.println(obj);
}
}
catch(EOFException e) {
//read end
}
最后,ObjectInputStream只能读取non-static属性。
不行的。后面的 out.writeObject(),会覆盖掉前面的 out.writeObject()。不管写多少次,txt文件中只有最后一个!
5楼正解