java 文件流压缩 直接压缩成压缩包 ZipOutputStream
昵称
密码

java 文件流压缩 直接压缩成压缩包 ZipOutputStream

fl0919
2021-07-31 / 0 评论 / 19 阅读 / 正在检测是否收录...
/

在对服务器没有磁盘读写的情况下需要用到ZipOutputStream

import java.io.*;
import java.net.URL;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZiposTest {
    public static void main(String[] args) throws IOException {
        //文件为输出位置
        FileOutputStream fos = new FileOutputStream("D:\\test.zip");
        /**
         * 网络输出流 下载时用到
         * */
       /* OutputStream outputStream = response.getOutputstream;
        ZipOutputStream zos = new ZipOutputStream(outputStream);*/

        ZipOutputStream zos = new ZipOutputStream(fos);


        //写入一个条目,我们需要给这个条目起个名字,相当于起一个文件名称
        zos.putNextEntry(new ZipEntry("1.txt"));
        //往这个条目中写入一定的数据
        zos.write("这是压缩包内txt的内容".getBytes());
        //关闭该条目
        zos.closeEntry();

        /**
         * 从网络获取一个图片*/
        //写入一个条目,条目名
        zos.putNextEntry(new ZipEntry("2.jpg"));
        URL url = new URL("https://r.photo.store.qq.com/psc?/V50tSSWT3GtMHB1dUL9E1DCHb84RV3zp/45NBuzDIW489QBoVep5mcfsCuk0RjQYa9TE2dMrv*qD2cJ4eXZdbc0PKyUatJa75DM1tX9*j0JYRzBpcr5j.7B2YRX*nBzkdtEopa6BpITA!/r?key=582349");
        //网络输入流
        InputStream ins = url.openStream();
        //多态  文件输入流转buffer 输入流
        ins = new BufferedInputStream(ins);
        //10k 字节数组
        byte[] insbyte = new byte[1024 * 100];
        //长度就是每次 出流中取出的长度并存放到  字节数组的长度
        int len;
        // 有内容
        while ((len = ins.read(insbyte)) != -1) {
            zos.write(insbyte);


        }
        //关闭该条目
        zos.closeEntry();

      


        //关输入流
        ins.close();

        // 关闭流
        zos.close();
    }

}

0

评论

博主关闭了所有页面的评论