ludc
2025-01-16 986aa62ed00bee39363bab41b4eeb8259d446efd
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.vci.client.portal.Formdesign.object;
 
import java.awt.Image;
import java.awt.Toolkit;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
 
import com.vci.client.portal.Formdesign.ControlDragManager;
 
 
/**
 * 工具类
 * 
 * @author liudi
 * 
 */
public class ObjectUtil {
 
    private ObjectUtil() {
    }
 
    /**
     * 克隆对象
     * 
     * @param obj
     * @return
     */
    public static Object cloneObject(Object obj) {
        Object copyObj = null;
        try {
            String fileName = System.nanoTime() + "";
            File f = new File(fileName);
            writeObject(obj, f);
            copyObj = readObject(f);
            System.gc();
            f.delete();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return copyObj;
    }
 
    /**
     * 反序列化
     * 
     * @param f
     * @return
     * @throws FileNotFoundException
     * @throws IOException
     * @throws ClassNotFoundException
     */
    public static Object readObject(File f) throws FileNotFoundException,
            IOException, ClassNotFoundException {
        ObjectInputStream ois = null;
        ois = new ObjectInputStream(new BufferedInputStream(
                new FileInputStream(f)));
        Object obj = ois.readObject();
        ois.close();
        return obj;
    }
 
    /**
     * 序列化
     * 
     * @param obj
     * @param f
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static void writeObject(Object obj, File f)
            throws FileNotFoundException, IOException {
        ObjectOutputStream out = null;
        out = new ObjectOutputStream(new BufferedOutputStream(
                new FileOutputStream(f)));
        out.writeObject(obj);
        out.flush();
        out.close();
    }
 
    /**
     * 解压缩反序列化
     * 
     * @param f
     * @return
     * @throws FileNotFoundException
     * @throws IOException
     * @throws ClassNotFoundException
     */
    public static Object readZip(File f) throws FileNotFoundException,
            IOException, ClassNotFoundException {
        ObjectInputStream ois = null;
        GZIPInputStream gis;
        gis = new GZIPInputStream(new BufferedInputStream(
                new FileInputStream(f)));
        ois = new ObjectInputStream(gis);
        Object obj = ois.readObject();
        ois.close();
        return obj;
    }
 
    /**
     * 压缩序列化
     * 
     * @param obj
     * @param f
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static void writeZip(Object obj, File f)
            throws FileNotFoundException, IOException {
        ObjectOutputStream out = null;
        GZIPOutputStream gout = null;
        gout = new GZIPOutputStream(new BufferedOutputStream(
                new FileOutputStream(f)));
        out = new ObjectOutputStream(gout);
        out.writeObject(obj);
        out.flush();
        gout.finish();
        out.close();
    }
 
    /**
     * 获取图片
     * 
     * @param name
     * @return
     */
    public static Image getImage(String name) {
        return Toolkit.getDefaultToolkit().getImage(
                ControlDragManager.class.getResource(name));
    }
}