博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中IO流中的对象操作流(2)——解决对象输入流读取对象出现异常的问题
阅读量:2443 次
发布时间:2019-05-10

本文共 2735 字,大约阅读时间需要 9 分钟。

解决对象输入流读取对象出现异常的问题

package com.itheima_07;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayList;/* * 解决对象输入流读取对象出现异常的问题 *  */public class ObjectOutputStreamDemo3 {	public static void main(String[] args) throws IOException, ClassNotFoundException   {		//method();				//创建对象输入流的对象		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.txt"));		//读取数据		Object obj = ois.readObject(); 		//System.out.println(obj);				//向下转型,获取具体的子类对象		ArrayList
list = (ArrayList
) obj; for (Student student : list) { System.out.println(student); } //释放资源 ois.close(); } private static void method() throws IOException, FileNotFoundException { //创建对象输出流的对象 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.txt")); //创建集合对象 ArrayList
list = new ArrayList
(); //添加学生对象 list.add(new Student("wangwu",30)); list.add(new Student("zhaoliu",28)); //写出集合对象 oos.writeObject(list); //释放资源 oos.close(); }}

解决读写对象版本不一致问题

package com.itheima_07;import java.io.Serializable;public class Student implements Serializable {		/**	 * 	 */	private static final long serialVersionUID = 6361890890437825953L;	String name;	int age;	String gender;		public Student(String name,int age) {		this.name = name;		this.age = age;	}	@Override	public String toString() {		return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]";	} }package com.itheima_07;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;/* * 解决对实现序列化接口出现的黄色警告问题 * Exception in thread "main" java.io.InvalidClassException * 当 Serialization 运行时检测到某个类具有以下问题之一时,抛出此异常。 		该类的序列版本号与从流中读取的类描述符的版本号不匹配 		该类包含未知数据类型 		该类没有可访问的无参数构造方法  *  */public class ObjectOutputStreamDemo4 {	public static void main(String[] args) throws IOException, ClassNotFoundException  {		//method();				method2();	}		//读取学生对象	private static void method2() throws IOException, FileNotFoundException, ClassNotFoundException {		//创建对象输入流的对象		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c.txt"));		//读取对象		Object obj = ois.readObject();		System.out.println(obj);		//释放资源		ois.close();	}		//写出学生对象	private static void method() throws IOException, FileNotFoundException {		//创建对象输出流的对象		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c.txt"));		//创建的学生对象		Student s = new Student("qianqi",28);		//写出学生对象		oos.writeObject(s);		//释放资源		oos.close();	}}

转载地址:http://mnjqb.baihongyu.com/

你可能感兴趣的文章
react 组件样式_如何设置React组件的样式
查看>>
node.js 模块_如何创建Node.js模块
查看>>
centos上安装git_如何在CentOS 8上安装Git
查看>>
在JavaScript中优化switch语句
查看>>
express 模板引擎_了解Express模板引擎
查看>>
如何在CentOS 8上安装Node.js
查看>>
如何在Ubuntu 20.04上安装Git
查看>>
javascript深度图_在JavaScript中深度克隆对象(及其工作方式)
查看>>
centos ssh密钥_如何在CentOS 8上设置SSH密钥
查看>>
debian 10 安装_如何在Debian 10上安装Webmin
查看>>
使用CentOS 8进行初始服务器设置
查看>>
ecmascript v3_节点v12中的新ECMAScript模块简介
查看>>
盖茨比乔布斯_通过盖茨比使用Airtable
查看>>
mern技术栈好处?_如何开始使用MERN堆栈
查看>>
路由器接路由器_路由器之战:到达路由器vsReact路由器
查看>>
rxjs 搜索_如何使用RxJS构建搜索栏
查看>>
如何在Debian 10上安装MariaDB
查看>>
go函数的可变长参数_如何在Go中使用可变参数函数
查看>>
debian 服务器_使用Debian 10进行初始服务器设置
查看>>
joi 参数验证_使用Joi进行节点API架构验证
查看>>