java代码如何实现将一个对象写入到文件中及从文件中读取对象呢?

乔欣 Java经验 发布时间:2023-02-05 22:54:28 阅读数:10048 1
下文笔者讲述将对象写入到文件持久化及文件读入到对象的方法及示例分享,如下所示
今天接到一个需求,需将对象持久化到文件中,及文件转换为对象
    从这个需求的底层出发,这其实是一个文件序列化和反序列化的需求
	那么Java代码如何实现对象的序列化和反序列化操作呢?下文笔者将一一道来,如下所示

实现思路:
    1.实体类继承java.io.Serializable接口或其子接口java.io.Externalizable
	2.使用代码对其进行序列化和反序列化操作
例:
实体类序列化和反序列化的操作示例
//定义一个Person对象
Person.java

package com.java265;
import java.io.Serializable;
public class Person implements Serializable {
 	private static final long serialVersionUID = 1L;
	private String name;
	private int age;
	private String gender;
 
	Person() {
	};
 
	Person(String name, int age, String gender) {
		this.name = name;
		this.age = age;
		this.gender = gender;
	}
 
	@Override
	public String toString() {
		return "Name:" + name + "\nAge: " + age + "\nGender: " + gender;
	}
}


//使用java.io.ObjectOutputStream将对象转换为字节流,并写入到文件中
//WriterReader.java
 
package com.java265; 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
 
public class WriterReader {
 
	public static void main(String[] args) {
 
		Person p1 = new Person("maomao",18, "Male");
		Person p2 = new Person("liuxiaoqing",56, "Female");
 
		try {
			FileOutputStream f = new FileOutputStream(new File("test.txt"));
			ObjectOutputStream o = new ObjectOutputStream(f);
 
			// Write objects to file
			o.writeObject(p1);
			o.writeObject(p2);
 
			o.close();
			f.close();
 
			FileInputStream fi = new FileInputStream(new File("test.txt"));
			ObjectInputStream oi = new ObjectInputStream(fi);
 
			// Read objects
			Person pr1 = (Person) oi.readObject();
			Person pr2 = (Person) oi.readObject();
 
			System.out.println(pr1.toString());
			System.out.println(pr2.toString());
 
			oi.close();
			fi.close();
 
		} catch (FileNotFoundException e) {
			System.out.println("File not found");
		} catch (IOException e) {
			System.out.println("Error initializing stream");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
} 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202302/16756089275668.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者