43-天亮大数据经典大数据笔试题系列之工具类之对象序列化IO操作

  • 工具类意义描述
    • 对象序列化在实际开发场景中使用非常多,经常用于对象缓存、IO加速等方面,同时也是很开发工程师比较薄弱的一个环节,故工具之。
  • 代码实现


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
 * 对象序列化工具类实现
 * @author tianliang
 *
 * @date 2019年6月14日
 */
public class ObjectIOUtil {
	public static void writeObjectToFile(Object obj, String filePath)
			throws IOException {
		FileOutputStream fos = new FileOutputStream(filePath);
		ObjectOutputStream oos = new ObjectOutputStream(fos);

		oos.writeObject(obj);
		oos.flush();
		oos.close();
	}

	public static void writeObjectToFile(Object obj, int byteBufferSize,
			String filePath) throws IOException {
		// FileOutputStream fos = new FileOutputStream(filePath);
		// ObjectOutputStream oos = new ObjectOutputStream(fos);
		// oos.writeObject(obj);
		// oos.flush();
		// oos.close();
		byte[] byteArray = convertObjectToByteArray(obj, byteBufferSize);
		FileOperatorUtil.writeByteArrayToFile(byteArray, filePath);
	}

	public static byte[] convertObjectToByteArray(Object obj)
			throws IOException {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(baos);

		oos.writeObject(obj);
		oos.flush();
		oos.close();

		return baos.toByteArray();
	}

	public static byte[] convertObjectToByteArray(Object obj, int byteBufferSize)
			throws IOException {
		ByteArrayOutputStream baos = new ByteArrayOutputStream(byteBufferSize);
		ObjectOutputStream oos = new ObjectOutputStream(baos);

		oos.writeObject(obj);
		oos.flush();
		oos.close();

		return baos.toByteArray();
	}

	public static Object convertByteArrayToObject(byte[] byteArray)
			throws ClassNotFoundException, IOException {
		// 读取该文件对应的对象数据
		ByteArrayInputStream bios = new ByteArrayInputStream(byteArray);
		ObjectInputStream ois = new ObjectInputStream(bios);
		try {
			return ois.readObject();
		} finally {
			ois.close();
		}
	}

	public static Object readObjectFromFile(String filePath)
			throws ClassNotFoundException, IOException {
		// 读取该文件对应的对象数据
		FileInputStream fis = new FileInputStream(filePath);
		ObjectInputStream ois = new ObjectInputStream(fis);

		try {
			return ois.readObject();
		} finally {
			ois.close();
		}
	}

	public static Object readObjectFromFile(String filePath, int byteBufferSize)
			throws ClassNotFoundException, IOException {
		// 读取该文件对应的对象数据
		FileInputStream fis = new FileInputStream(filePath);
		byte[] byteArray = new byte[byteBufferSize];
		fis.read(byteArray);
		return convertByteArrayToObject(byteArray);
		// ObjectInputStream ois = new ObjectInputStream(fis);
		// try {
		// return ois.readObject();
		// } finally {
		// ois.close();
		// }
	}
}


天亮教育是一家从事大数据云计算、人工智能、教育培训、产品开发、咨询服务、人才优选为一体的综合型互联网科技公司。
公司由一批BAT等一线互联网IT精英人士创建,
以"快乐工作,认真生活,打造IT职业技能教育的一面旗帜"为愿景,胸怀"让天下没有难找的工作"使命,
坚持"客户第一、诚信、激情、拥抱变化"的价值观,
全心全意为学员赋能提效,践行技术改变命运的初心。

更多学习讨论, 请加入
官方-天亮大数据交流-366784928
群二维码:
这里写图片描述
官方-天亮web前端交流-972788995
群二维码:
在这里插入图片描述

欢迎关注天亮教育公众号,大数据技术资料与课程、招生就业动态、教育资讯动态、创业历程分享一站式分享,官方微信公众号二维码:
在这里插入图片描述

天亮教育大数据官方群318971238,
天亮教育web前端官方群318971238,
爬虫、nlp技术qq群320349384
hadoop & spark & hive技术群297585251
教育培训官网:http://myhope365.com
项目研发业务尚云科技官网:http://shangyuninfo.com/
天亮教育公开课-从小白到大佬修成记-全系列视频地址:http://myhope365.com/news/index?id=66
天亮云课堂小程序版,微信扫码下图可直接进入学习!!!

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/erliang20088/article/details/91971588
今日推荐