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)); } }