多个文件打包生成压缩包

文章描述了一个Java程序,名为t2,它包含一个方法fileToZip,用于将给定路径下的多个文件(如.xls,.jpeg,.txt等)打包成一个ZIP文件。
摘要由CSDN通过智能技术生成
package com.shucha.deveiface.biz.test;

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

/**
 * @author tqf
 * @Description
 * @Version 1.0
 * @since 2024-02-19 11:20
 */
public class t2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList< >();
        list.add("D:\\20210213\\1.xls");
        list.add("D:\\20210213\\2.xls");
        list.add("D:\\20210213\\3.xls");
        list.add("D:\\20210213\\2.jpeg");
        list.add("D:\\20210213\\2.txt");
        list.add("D:\\20210213\\2.docx");
        fileToZip(list, "D:\\20210213\\123.zip");
    }

    /**
     * 多个文件打包成zip文件包
     * @param list 需要打包的文件路径列表
     * @param zipPath 生成的文件压缩包文件存放路径
     */
    public static void fileToZip ( List<String> list , String zipPath){
        try(
                FileOutputStream out = new FileOutputStream(zipPath);
                ZipOutputStream zipOut = new ZipOutputStream (out);
         ){
            for (String filePath : list) {
                FileInputStream in = new FileInputStream (filePath);
                // 创建ZipEntry 对象 设置名称
                File file = new File ( filePath );
                ZipEntry zipEntry = new ZipEntry ( file . getName ());
                zipOut.putNextEntry(zipEntry );
                // 读取源文件的内容写入 zip
                byte [] bytes = new byte [1024];
                int length ;
                while (( length = in . read ( bytes ))>=0) {
                    zipOut.write(bytes, 0, length);
                }
            }
            zipOut.closeEntry ();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您想要先将多个文件打包压缩包,然后再将压缩包进行分片下载。以下是一种实现方式: 1. 首先,确保您的服务器上安装了zip扩展。您可以通过在PHP配置文件中取消注释 `extension=zip` 来启用该扩展。 2. 在服务器端,您可以创建一个PHP脚本来处理下载请求。首先,您需要将多个文件打包成一个压缩包。您可以使用以下代码: ```php $files = array('/path/to/file1', '/path/to/file2', '/path/to/file3'); // 要打包文件路径数组 $zipname = '/path/to/your/zipfile.zip'; // 压缩包保存路径 $zip = new ZipArchive(); if ($zip->open($zipname, ZipArchive::CREATE) === TRUE) { foreach ($files as $file) { $filename = basename($file); $zip->addFile($file, $filename); } $zip->close(); } else { echo 'Failed to create zip file.'; exit; } ``` 这段代码会将指定的文件打包成一个压缩包并保存到指定路径。 3. 接下来,您可以使用类似之前提到的代码来实现分片下载压缩包的功能。您只需要将文件路径更改为压缩包的路径即可。 ```php $file = '/path/to/your/zipfile.zip'; // 压缩包路径 $filename = 'filename.zip'; // 下载时显示的文件名 $chunk_size = 1024 * 1024; // 分片大小,这里设置为1MB if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); // 打开文件进行分片下载 $handle = fopen($file, 'rb'); if ($handle) { while (!feof($handle)) { echo fread($handle, $chunk_size); ob_flush(); flush(); } fclose($handle); } exit; } else { echo 'File not found.'; } ``` 请确保将代码中的`/path/to/file1`、`/path/to/file2`、`/path/to/file3`替换为您实际的文件路径,并将`/path/to/your/zipfile.zip`替换为您希望生成压缩包路径。 希望对您有所帮助!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码奴生来只知道前进~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值