Java压缩流批量压缩文件上传至网盘

以百度网盘为例,上传单一压缩包大小不能超过2GB,而我们的.mp4格式的学习视频每一个都有1GB左右,不能直接将整个500GB的文件夹压缩上传,只能一个视频一个视频地压缩。我们不可能手动一个一个压缩这几百个视频,故使用Java压缩流,遍历文件夹,压缩每个.mp4文件,代码如下

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

public class MyZip {
    public static void main(String[] args) {
        // 遍历文件夹
        File folder = new File("D:\\卡尔\\Videos\\1\\animation");
        File[] files = folder.listFiles();

        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()) {
                // 压缩文件
                try {
                    compressFile(files[i],i+1);
                    System.out.println("File compressed successfully: " + files[i].getName());
                } catch (IOException e) {
                    System.err.println("Error compressing file: " + e.getMessage());
                }
            }
        }
    }

    public static void compressFile(File file,int num) throws IOException {
        try (
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(num + ".zip")))
        ) {
            // 创建一个ZipEntry,并添加到zip文件中
            ZipEntry zipEntry = new ZipEntry(file.getName());
            zos.putNextEntry(zipEntry);

            // 从源文件中读取数据并写入zip文件
            byte[] buffer = new byte[4*1024*1024];
            int bytesRead;
            while ((bytesRead = bis.read(buffer)) != -1) {
                zos.write(buffer, 0, bytesRead);
            }

            // 完成当前条目的写入
            zos.closeEntry();

            // 注意:在这个简单的例子中,我们只添加了一个文件到ZIP中。
            // 如果你想要添加多个文件,你需要在循环中重复上述步骤(创建ZipEntry、putNextEntry、读取和写入、closeEntry)。

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

如图,我们成功将学习资料压缩成zip,保存在java工程目录中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值