java序列化,反序列化及反序列如何判断是否已读到文件末尾

本文介绍了一个Java程序实例,展示了如何通过实现Serializable接口进行对象的序列化和反序列化。文章通过具体代码解释了使用ObjectOutputStream和ObjectInputStream进行文件操作的过程,并讨论了如何处理EOFException异常。

对象序列化和反序列化 必须实现Serializable 接口 


关于反序列,因为对象已经是一个字节序列所以,不能用.read()方法判断 同时使用

 string s =(String)in.readObject()方法 虽然能够读取文件 但是会抛出EOFException 异常 可以利用这一点

详情见代码


package Number_1802;

import java.io.*;

/**
 * 对象序列化和反序列化 必须实现Serializable 接口 关于反序列,因为对象已经是一个字节序列所以,不能用.read()方法判断 同时使用
 * string s =in.readObject()方法 虽然能够读取文件 但是会抛出EOFException 异常 可以利用这一点
 * 
 * 
 * @author he
 * 
 */
public class P573 implements Serializable {
	static String filename = "F:/workspace/Java Thinking002/src/Number_1802/P573.java";
	static String filename2 = "F:/IOtest/b/Serializable.txt";

	public static void main(String[] args) throws IOException, IOException,
			ClassNotFoundException {
		// 对象序列化
		ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(
				filename2));
		BufferedReader in = new BufferedReader(new FileReader(filename));
		String s;
		while ((s = in.readLine()) != null) {
			// 通过writeObject() 实现序列化,打开文件很乱
			out.writeObject(s);
		}
		// 反序列化
		ObjectInputStream in2 = new ObjectInputStream(new FileInputStream(
				filename2));

		System.out.println("因为是字节序列,所以用.read()方法永远是-1:" + in2.read());

		// 使用此方法虽然能读出文件但会抛出EOFException异常,因此利用这一点用第二种方法输出
		// String s2;
		// while((s2=(String)in2.readObject())!=null){
		// System.out.println(s2);
		// }

		while (true) {
			try {
				System.out.println(in2.readObject());
				// 当抛出EOFException时 则表明已经读到文件末尾
			} catch (EOFException e) {
				break;
			}
		}
	}
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值