001package arcommon.persistens;
002
003import java.io.FileInputStream;
004import java.io.FileOutputStream;
005import java.io.ObjectInputStream;
006import java.io.ObjectOutputStream;
007import java.io.Serializable;
008
009import arcommon.FileUtil;
010import arcommon.xml.XmlUtil;
011
012public class SerializableUtil {
013    public static Serializable loadObjectFromFile(String fileName) {
014        try {
015            FileInputStream fileInputStream = new FileInputStream(fileName);
016            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
017            Serializable object = (Serializable)objectInputStream.readObject();
018            objectInputStream.close();
019            fileInputStream.close();
020            return object;
021        } catch (Exception e) {
022            throw new RuntimeException(e);
023        }
024    }
025
026    public static void saveObjectToFile(String fileName, Serializable object) {
027        try {
028            if (FileUtil.exists(fileName)) {
029                FileUtil.delete(fileName);
030            }
031            
032            String path = FileUtil.calculatePath(fileName);
033            if (path != null && path.length() > 0) {
034                FileUtil.mkdirs(path);
035            }
036            
037            FileOutputStream fileOutputStream = new FileOutputStream(fileName);
038            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
039            objectOutputStream.writeObject(object);
040            objectOutputStream.close();
041            fileOutputStream.close();
042        } catch (Exception e) {
043            throw new RuntimeException(e);
044        }
045    }
046
047    public static void saveObjectToFileAsXML(String fileName, Serializable object) {
048        XmlUtil.objectToXmlFile(fileName, object);
049    }
050    
051    public static Serializable loadObjectFromFileAsXml(String fileName) {
052        return XmlUtil.xmlFileToObject(fileName);
053    }
054}