Android 按日期分类压缩多个文件 - Java 代码示例
以下是一个示例的 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文件中。
原文地址: https://www.cveoy.top/t/topic/ejMU 著作权归作者所有。请勿转载和采集!