派生自 projectDept/qhighschool

yn147
2023-11-23 bccada7cbf7eea3c37c0243d95426d1a29d9121f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package com.qxueyou.scc.base.util;
 
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
 
import org.apache.commons.io.IOUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
/**
 * 序列化工具类
 * @author 德虎
 *
 */
public class SerializeUtils {
    
    private static Logger log = LogManager.getLogger("SerializeUtils");
 
    /**
     * 将对象转换为字节数组
     * @param obj 可序列化的对象
     * @return 字节数组
     */
    public static byte[] toByteArrayFromObject(Object obj){
        
        if(!(obj instanceof Serializable)){
            return new byte[0];
        }
        
        ByteArrayOutputStream bo = new ByteArrayOutputStream();
        ObjectOutputStream oo = null;
        
        try {
            
            oo = new ObjectOutputStream(bo);
            
            oo.writeObject(obj);
            
            return bo.toByteArray();
            
        } catch (IOException e) {
            log.error(e,e);
        } finally{
            IOUtils.closeQuietly(oo);
        }
        
        return new byte[0];
        
    }
    
    /**
     * 将字节数组为对象转换
     * @param data 字节数组
     * @param cls 要转化的对象类型
     * @return 要转化的对象
     */
    public static <T> T toObjectFromByte(byte[] data,Class<T> cls){
        
        ByteArrayInputStream bi = new ByteArrayInputStream(data);
        ObjectInputStream oi = null;
        
        try {
            
            oi = new ObjectInputStream(bi);
            
            Object obj = oi.readObject();
            
            return cls.cast(obj);
            
        } catch (IOException e) {
            log.error(e,e);
        } catch (ClassNotFoundException e) {
            log.error(e,e);
        } finally{
            IOUtils.closeQuietly(oi);
        }
        
        return null;
    }
}