`

简单实现JAVA序列化、反序列化

    博客分类:
  • JAVA
 
阅读更多
public class SerializeMyUtils {
	
	private SerializeMyUtils(){};
	
	
	public static Object unserialize(byte[] bytes){
		
		if(null == bytes || bytes.length == 0){
			return null;
		}
		
		ByteArrayInputStream bais = null;
		ObjectInputStream ois = null;
		Object obj = null;
		try{
			bais = new ByteArrayInputStream(bytes);
			ois = new ObjectInputStream(bais);
			obj = ois.readObject();	
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				if(ois != null){
					ois.close();
				}
			}catch(Exception e){
				e.printStackTrace();
			}
			try{
				if(bais != null){
					bais.close();
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		return obj;
	}
	
	
	public static byte[] serialize(Object obj){
		if(null == obj){
			return null;
		}
		ByteArrayOutputStream baos = null;
		ObjectOutputStream oos = null;
		byte[] bs = null;
		try{
			baos = new ByteArrayOutputStream();
			oos = new ObjectOutputStream(baos);
			oos.writeObject(obj);
 			bs = baos.toByteArray();
 		}catch(Exception e){
			e.printStackTrace();
		}finally{
				try {
					if(null != oos){
 						oos.close();
					}
				} catch (IOException e) {
 					e.printStackTrace();
				}
				try {
					if(null != baos){
						baos.close();
					}
				} catch (IOException e) {
 					e.printStackTrace();
				}
		}
		return bs;
	}
}

 

 

    简单读取的代码:

	public static void main(String[] args){
		URLConnection myConn = null;
		InputStream in = null;
		BufferedReader br = null;
		URL myUrl = null;
		try{
			myUrl = new URL("https://www.aicailang.com/new/invManadmcAgrPc");  
	        myConn = myUrl.openConnection();  //打开连接  
	        in = myConn.getInputStream();       //获取输入流  
			br = new BufferedReader(new InputStreamReader(in));
			String line = null;
			while((line = br.readLine()) != null){
				System.out.println(line);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(null != br){
				try {
					br.close();
				} catch (IOException e) {
 					e.printStackTrace();
				}
			}
			
			if(null != in){
				try {
					in.close();
				} catch (IOException e) {
 					e.printStackTrace();
				}
			}
		}
	}

 

流的转换简单实现

	 /**
	  * 获取字节流文件
	 * @param f
	 * @return
	 */
	public static byte[] getBytesFromFile(File f) {
	        try {
				FileInputStream fileInputStream = null;
				try {
				    fileInputStream = new FileInputStream(f);
				    byte[] b = new byte[fileInputStream.available()];
				    fileInputStream.read(b);
				    return b;
				} catch (Exception e) {
				    throw e;
				} finally {
				    try {
				        if (fileInputStream != null) {
				            fileInputStream.close();
				        }
				    } catch (IOException e) {
				    }
				}
			} catch (Exception e) {
				LOGGER.error(e.getMessage(), e);
			}
	    	return null;
	    }
	    
	    /**
	     * 写文件
	     * @param savePath
	     * @param data
	     */
	    public static void wirteDataToFile(String savePath,byte[] data){
	        try {
				FileOutputStream fileOutputStream=null;
				try {
				    fileOutputStream = new FileOutputStream(savePath);
				    fileOutputStream.write(data);
				    fileOutputStream.flush();
				} catch (Exception e) {
				    throw e;
				} finally {
				    try {
				        if (fileOutputStream != null) {
				            fileOutputStream.close();
				        }
				    } catch (IOException e) {
				    }
				}
			} catch (Exception e) {
				LOGGER.error(e.getMessage(), e);
			}
	    }
	
	 /**
	  * 创建临时文件目录
	 * @param prefix
	 * @param suffix
	 * @return
	 */
	public static File createTempDir(){
		try {
			//File  tempPath = new File("./temp"); //创建相对路径的临时文件目录
			File tempPath = new File(System.getProperty("java.io.tmpdir"));
			if(!tempPath.exists() || !tempPath.isDirectory()){
			    tempPath.mkdir();  //如果不存在,则创建该文件夹
			}
			return tempPath;
		} catch (Exception e) {
  			LOGGER.error(e.getMessage(), e);
		}
		return null;
	 }

	private static File createTempFile(String prefix, String suffix, File tempPath)throws IOException {
		File tempFile = File.createTempFile(prefix, suffix, tempPath);
		return tempFile;
	}

 

分享到:
评论

相关推荐

    java序列化和反序列化的方法

    * 使用 Java 序列化 API 实现序列化和反序列化 在实际开发中,选择合适的序列化和反序列化方法取决于具体的需求和场景。在本例中,我们使用 Serializable 接口实现序列化和反序列化,以便在网络上传输 UserMessage ...

    java反序列化工具

    Java反序列化是一种将已序列化的对象状态转换回对象的过程,它是Java平台中持久化数据的一种常见方式。在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络间传输对象。然而,这个过程也可能引入...

    C#和Java的序列化反序列化

    而在Java中,我们可以通过实现`Serializable`接口来使类支持序列化,或者使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`进行对象的序列化和反序列化。 接下来,我们讨论反序列化。反序列化是序列...

    java序列化(Serializable)的作用和反序列化.doc

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...

    java 对象的序列化与反序列化

    现在,让我们看一个简单的序列化和反序列化的示例代码(基于提供的`StreamDemo_08.java`): ```java import java.io.*; public class StreamDemo { public static void main(String[] args) throws IOException,...

    java serializable 序列化与反序列化

    **一、Java序列化** 1. **什么是序列化**:序列化是将对象的状态(属性和成员变量)转换为可以存储或传输的数据格式的过程。在Java中,通常是将对象转换为字节数组,以便写入磁盘或通过网络发送。 2. **为什么需要...

    java序列化和反序列化

    ### Java序列化与反序列化详解 #### 一、Java序列化概述 Java序列化(Serialization)是一项重要的功能,它可以将对象的状态转化为一系列字节,从而实现对象的持久化存储或在网络上传输。序列化机制使得Java对象...

    Java对象序列化和反序列化工具Xson.zip

    Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven:  <groupId>com.github.xsonorg</groupId>  <artifactId>xson-core  <version>1.0.1 ...

    Java序列化_Java序列化结构_

    Java序列化是Java平台中的一种持久化机制,它允许对象的状态被转换成字节流,以便存储、网络传输或在不同时间点恢复。这个过程被称为序列化,而反向操作称为反序列化。序列化在许多场景下都非常有用,比如在分布式...

    java序列化实现演示

    Java序列化是Java平台中的一种标准机制,允许对象的状态被保存到磁盘或者在网络中进行传输,以便在后续的时间或地点恢复这些对象。这个过程包括两个主要操作:序列化(将对象转换为字节流)和反序列化(将字节流恢复...

    java序列化(Serializable)的作用和反序列化

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化是什么? 序列化是指将程序中的对象转换为字节流的过程,从而方便存储或传输这些对象。通常,序列化用于将对象的状态(即其实例变量的值,而非...

    Java序列化

    下面我们将深入探讨Java序列化的概念、作用、实现方式以及相关应用。 1. **序列化概念** - Java序列化是Java平台提供的一种持久化机制,它允许将对象转换为字节序列,这样就可以保存在文件中或在网络上传输。 - ...

    jackson库实现定制化的java序列化反序列化操作

    标题中的“jackson库实现定制化的java序列化反序列化操作”指的是利用Jackson库的能力,通过自定义规则来控制对象的序列化和反序列化过程。这通常涉及到创建自定义的`JsonSerializer`和`JsonDeserializer`,或者使用...

    java对象序列化和反序列化

    3. **ObjectInputValidation**:通过实现`java.io.ObjectInputValidation`接口并注册到`ObjectOutputStream`,可以在反序列化前进行验证,提升安全性。 综上,Java对象序列化和反序列化是Java开发中的基础技能,...

    Protocol Buffer序列化对比Java序列化.

    【Protocol Buffer序列化对比Java序列化】 Protocol Buffer(简称PB)是Google开发的一种高效的数据序列化协议,而Java序列化是Java...而Java序列化则在简单的Java项目内部或已有大量Java序列化数据的情况下更为便利。

    Java序列化与反序列化

    Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化

    java 常用序列化和反序列化框架使用demo

    Java序列化和反序列化是将对象的状态转换为字节流和从字节流恢复对象状态的过程,这对于数据持久化、网络传输以及跨进程通信等场景至关重要。在Java中,`java.io.Serializable`接口用于标记一个类是可序列化的。然而...

    java反序列化利用程序UI版Beta1.1.rar

    1. **Java序列化机制**:Java对象序列化是通过实现`Serializable`接口来标记一个类可被序列化。`ObjectOutputStream`用于将对象写入流,`ObjectInputStream`用于从流中读取并反序列化对象。 2. **易受攻击的库**:...

    java序列化反序列化

    java序列化反序列化 可以将一个对象保存起来哦,哈哈,很实用,别忘了实现序列化接口

    java 序列化时排除指定属性

    Java序列化是Java平台提供的一种持久化机制,它允许我们将一个Java对象转换为字节流,以便存储到磁盘上,或者通过网络进行传输。这使得我们可以保存和恢复对象的状态。实现序列化的类需要实现`Serializable`接口,...

Global site tag (gtag.js) - Google Analytics