object、byte[]、File文件相互转换

object转换File文件

上一篇写了一个《RestTemplate浅谈》,因为跨服务调用接口,接口返回是一个JSON字符串,里面有带一个文件,但是文件类型是一个byte[]数组,而JSONObject拿出来的却是object类型的,那么怎么转呢,查了一下资料。总结如下:

object类转换成file文件时,需要注意,不能直接转,需要转换。
object转换成byte[]数组,再由byte[]数组转换成File文件写进文件夹。

还有两点需要注意:

1、Object 对象必须是可序列化对象 。

2、可序列化的 Object 对象都可以转换为一个磁盘文件;反过来则不一定成立,只有序列
     化文件才可以转换为 Object 对象。

话不多说,直接上代码:

object转byte[]数组

	/**
     * TODO 从对象获取一个字节数组
     * @param obj 必须是可序列化的
     * @return
     */
    public byte[] getBytesByObject(Serializable serializableObject ) throws Exception {
        if (serializableObject == null) {
            return null;
        }
        ByteArrayOutputStream byteArrayOutputStream= new ByteArrayOutputStream();
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
        objectOutputStream.writeObject(serializableObject );
        return byteArrayOutputStream.toByteArray();
    }

byte[]转File文件,写进指定路径,并返回改文件

 	/**
     * TODO 把字节数组保存为一个文件
     * @param b
     * @param outputFile
     * @return
     */
    public File getFileFromBytes(byte[] b, String outputFile) {
        BufferedOutputStream stream = null;
        File file = null;
        try {
        	//获取本地文件
            file = new File(outputFile);
            //打开输出流
            FileOutputStream fstream = new FileOutputStream(file);
            //字节缓冲输出流
            stream = new BufferedOutputStream(fstream);
            //开始写数据
            stream.write(b);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (stream != null) {
                try {
                    stream.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
        return file;
    }

byte[]数组转object类型

	/**
     * TODO 把字节数组转换成object类型
     * @param bytes
     * @param outputFile
     * @return
     */
    public static Object getObjectByBytes(byte[] bytes) throws Exception {
       if (bytes== null || bytes.length == 0){
           return null;
       }

       ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
       ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);

       return objectInputStream.readObject();
    }

File文件转byte[]数组

	/**
     * TODO 把文件转换成字节数组
     * @param b
     * @param outputFile
     * @return
     */
	public static byte[] getBytesFromFile(File file) {
        if (file == null) {
            return null;
        }
        try {
            FileInputStream stream = new FileInputStream(file);
            ByteArrayOutputStream out = new ByteArrayOutputStream(1000);
            byte[] b = new byte[1000];
            int n;
            while ((n = stream.read(b)) != -1) {
                out.write(b, 0, n);
            }
            stream.close();
            out.close();
            return out.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

以上就是object、byte[]、file文件之间的相互转换类,直接可以使用,根据大家的不同需求可对里面的返回值和传参进行修改,制作不易,不喜勿喷,小白一枚正在进阶,大佬请留情😁😁😉

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值