压缩流、解压缩流,了解一下

1、压缩单个文件

思路:

1.需要压缩的文件A
2.压缩后压缩包B存放位置及名字
3.用FileInputStream 接A
4.用ZipOutputStream 接B
5.ZipOutputStream.putNextEntry(new ZipEntry(“newzipone.txt”)) 对准一个压缩包中要产生的(压缩体 ZipEntry)
6.while ((temp = input.read()) != -1){ zipOut.write(temp); }// 开始将文件压缩进对应的(压缩体 上面已经定好)

代码:

public class IOTest1 {
    public static void main(String[] args) throws IOException {

        // 压缩单个文件

        String path = "C:\\Users\\康康\\Desktop\\test.txt";
        String zippath = "C:\\Users\\康康\\Desktop\\"; // 压缩文件保存路径
        File file = new File(path);
        File zipFile = new File(zippath + "one.zip"); // 给压缩包起名
        InputStream input = new FileInputStream(file);
        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));

        zipOut.putNextEntry(new ZipEntry("newzipone.txt")); // 给压缩内容文件起名
        zipOut.setComment("i am lyk");  // 给压缩包增加注释
        int temp = 0;
        while ((temp = input.read()) != -1){
            zipOut.write(temp);
        }
        input.close();
        zipOut.close();

    }
}
2、压缩多个文件

代码:

public class IOTset_1 {
    public static void main(String[] args) throws Exception {
        // 压缩多个文件

        // 建立ZipOutputStream
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("my.zip",true));

        zos.putNextEntry(new ZipEntry("a.txt"));
        zos.write(new FileInputStream("a.txt").readAllBytes());

        zos.putNextEntry(new ZipEntry("b.txt"));
        zos.write(new FileInputStream("b.txt").readAllBytes());

        zos.putNextEntry(new ZipEntry("d.txt"));
        zos.write(new FileInputStream("d.txt").readAllBytes());

        zos.putNextEntry(new ZipEntry("src.md"));
        zos.write(new FileInputStream("src.md").readAllBytes());

        zos.close();
    }
}
3、解压缩(压缩包只有一个文件)

代码:

public class IOTest2 {
    public static void main(String[] args) throws Exception {

        // 解压缩单个文件

        File file = new File("my.zip");

        File outFile = new File("g:/" + "newone.txt"); // 解压缩后,文件存放位置
        ZipFile zipFile = new ZipFile(file); // 已压缩的文件
        ZipEntry entry = zipFile.getEntry("b.txt"); // 根据名字得到压缩包中的一个文件,并将其解压缩
        InputStream input = zipFile.getInputStream(entry);
        OutputStream output = new FileOutputStream(outFile);
        int temp = 0;
        while ((temp = input.read()) != -1){
            output.write(temp);
        }
        input.close();
        output.close();
    }
}
4、解压缩(压缩包含多个文件)

思路:

1.用ZipFile类得到压缩包A
2.用ZipInputStream得到压缩包的解压缩流
3.通过while ((entry = zipInput.getNextEntry())) 得到压缩包中各个压缩体
4.用ZipFile.getInputStream(entry) 得到各个压缩体的输入流,用于读取数据
5.定义解压缩后各压缩体的存放
6.output = new FileOutputStream(outFile); int temp = 0; while((temp = input.read()) != -1) { output.write(temp); }

代码:

public class IOTest_2 {
    public static void main(String[] args) throws Exception {
        File file = new File("my.zip");
        File outFile = null;
        ZipFile zipFile = new ZipFile(file); // 压缩包文件

        ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file));
        ZipEntry entry = null;
        InputStream input = null;
        OutputStream output = null;
        while ((entry = zipInput.getNextEntry()) != null){
            System.out.println("解压缩" + entry.getName() + "文件");
            outFile = new File("f:/" + entry.getName());
            if (!outFile.getParentFile().exists()){
                outFile.getParentFile().mkdir();
            }
            if (!outFile.exists()){
                outFile.createNewFile();
            }

            input = zipFile.getInputStream(entry);
            output = new FileOutputStream(outFile);
            int temp = 0;
            while ((temp = input.read()) != -1){
                output.write(temp);
            }
            input.close();
            output.close();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值