以下是一个示例的 Java 代码,用于将多个文件按日期分类压缩:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class FileCompressor {

    public static void main(String[] args) {
        String sourceDir = '/path/to/source/directory';
        String targetDir = '/path/to/target/directory';
        compressFilesByDate(sourceDir, targetDir);
    }

    public static void compressFilesByDate(String sourceDir, String targetDir) {
        File directory = new File(sourceDir);
        File[] files = directory.listFiles();

        // 创建一个Map用于存储按日期分类的文件列表
        Map<String, List<File>> fileMap = new HashMap<>();

        // 遍历源目录下的所有文件
        for (File file : files) {
            if (file.isFile()) {
                Date lastModifiedDate = new Date(file.lastModified());
                SimpleDateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd');
                String date = dateFormat.format(lastModifiedDate);

                // 将文件添加到对应日期的文件列表中
                if (fileMap.containsKey(date)) {
                    fileMap.get(date).add(file);
                } else {
                    List<File> fileList = new ArrayList<>();
                    fileList.add(file);
                    fileMap.put(date, fileList);
                }
            }
        }

        // 遍历按日期分类的文件列表,并进行压缩
        for (Map.Entry<String, List<File>> entry : fileMap.entrySet()) {
            String date = entry.getKey();
            List<File> fileList = entry.getValue();

            try {
                String targetFileName = targetDir + '/' + date + '.zip';
                FileOutputStream fos = new FileOutputStream(targetFileName);
                ZipOutputStream zos = new ZipOutputStream(fos);

                for (File file : fileList) {
                    addToZipFile(file, zos);
                }

                zos.close();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void addToZipFile(File file, ZipOutputStream zos) throws IOException {
        FileInputStream fis = new FileInputStream(file);
        ZipEntry zipEntry = new ZipEntry(file.getName());
        zos.putNextEntry(zipEntry);

        byte[] buffer = new byte[1024];
        int length;
        while ((length = fis.read(buffer)) >= 0) {
            zos.write(buffer, 0, length);
        }

        zos.closeEntry();
        fis.close();
    }
}

请注意,你需要将/path/to/source/directory/path/to/target/directory替换为实际的源目录和目标目录路径。该代码将按照文件的最后修改日期将文件分类,并将每个日期下的文件压缩到以日期命名的ZIP文件中。

Android 按日期分类压缩多个文件 - Java 代码示例

原文地址: https://www.cveoy.top/t/topic/ejMU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录