Java 保存对象到本地

Posted 瞌睡先生想睡觉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 保存对象到本地相关的知识,希望对你有一定的参考价值。

将对象保存在本地第一时间一般想到的都是ObjectOutput,但是我在网上无意中发现还可以将对象转为json字符串来保存,嘿,都点灯下黑了,一直在用json传输数据一时之间竟然没想到,我们在保存对象时候有时候并不需要保存信息,有时候只需要保存对这个对象来说最关键的变量即可

总结:将对象保存到本地的两种方法

1.保存成json字符串
2.ObjectOutputStream序列化到本地

需要注意的是在使用 序列化对象的时候,该对象需要实现Serializable接口

    public static void saveObjectByObjectOutput(Object o, File file) 
        try 
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(file));
            objectOutputStream.writeObject(o);
            objectOutputStream.close();
         catch (IOException e) 
            e.printStackTrace();
        
    

    public static Object getObjectByObjectInput(File file) 
        try 
            ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file));
            Object o = inputStream.readObject();
            inputStream.close();
            return o;
         catch (Exception e) 
            e.printStackTrace();
        
        return null;
    

    public static void saveObjectByJson(File file, Object o) 
        String json = new Gson().toJson(o);
        try 
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            fileOutputStream.write(json.getBytes());
            fileOutputStream.close();
         catch (IOException e) 
            e.printStackTrace();
        
    

    public static Object getObjectByJson(File file, Class c) 
        try 
            FileInputStream fileInputStream = new FileInputStream(file);
            StringBuilder stringBuilder = new StringBuilder();
            int l = 0;
            byte[] bs = new byte[1024];
            while ((l = fileInputStream.read(bs)) != -1) 
                stringBuilder.append(new String(bs, 0, l));
            
            fileInputStream.close();
            return new Gson().fromJson(stringBuilder.toString(), c);
         catch (Exception e) 
            e.printStackTrace();
        
        return null;
    

另外送上Object和String互转的方法:

    public static String ObjectToString(Object o) 
        try 
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
            objectOutputStream.writeObject(o);
            objectOutputStream.close();
            byteArrayOutputStream.close();
            return new BASE64Encoder().encode(byteArrayOutputStream.toByteArray());
         catch (IOException e) 
            e.printStackTrace();
        
        return null;
    

    public static Object StringToObject(String str) 
        try 
            byte[] bs = new BASE64Decoder().decodeBuffer(str);

            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bs);
            ObjectInputStream inputStream = new ObjectInputStream(byteArrayInputStream);
            Object o = inputStream.readObject();
            inputStream.close();
            byteArrayInputStream.close();
            return o;
         catch (Exception e) 
            e.printStackTrace();
        
        return null;
    

以上是关于Java 保存对象到本地的主要内容,如果未能解决你的问题,请参考以下文章

(小白)用java保存(读取)对象到本地 对象中所有的调用的类都要实现Serializable接口吗

java New 了一个 doc文件对象 ,我想把他另存为docx文件 然后保存到本地,怎么弄,求高手帮助

response.getwriter()页面的信息如何保存到本地文件

iOS自己定义对象保存到本地文件

将游戏数据本地保存到文件夹(啥文件?) - Java

java保存图片到本地服务器共享