Kotlin 代码:将同一文件夹下的文件按当天日期合并压缩,不覆盖
Kotlin 代码:将同一文件夹下的文件按当天日期合并压缩,不覆盖
本示例代码使用 Kotlin 语言,将同一文件夹下的文件按当天日期分组,并将每个日期的文件合并为一个压缩文件,输出到指定的文件夹中,避免覆盖已有压缩文件。
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream
import java.text.SimpleDateFormat
import java.util.Date
fun main() {
val folderPath = "/path/to/folder" // 替换为实际文件夹的路径
val outputFolderPath = "/path/to/output/folder" // 替换为实际输出文件夹的路径
val files = File(folderPath).listFiles()
val groupedFiles = files.groupBy { getFileDate(it) }
for ((date, fileList) in groupedFiles) {
val outputFileName = SimpleDateFormat("yyyy-MM-dd").format(date) + ".zip"
val outputFile = File(outputFolderPath, outputFileName)
if (outputFile.exists()) {
continue // 如果输出文件已存在,则跳过
}
ZipOutputStream(FileOutputStream(outputFile)).use { zipOut ->
for (file in fileList) {
FileInputStream(file).use { fileIn ->
val entry = ZipEntry(file.name)
zipOut.putNextEntry(entry)
val buffer = ByteArray(1024)
var len: Int
while (fileIn.read(buffer).also { len = it } > 0) {
zipOut.write(buffer, 0, len)
}
zipOut.closeEntry()
}
}
}
println("合并压缩完成:$outputFileName")
}
}
fun getFileDate(file: File): Date {
val fileName = file.nameWithoutExtension
val dateFormat = SimpleDateFormat("yyyy-MM-dd-HH")
return dateFormat.parse(fileName)
}
在上面的代码中,需要将/path/to/folder和/path/to/output/folder替换为实际的文件夹路径和输出文件夹路径。代码会将给定文件夹下的文件按照日期进行分组,然后将每个日期的文件合并为一个压缩文件,输出到指定的输出文件夹中。代码中使用了java.util.zip包来进行压缩操作,并使用java.text.SimpleDateFormat来解析文件名中的日期。
原文地址: https://www.cveoy.top/t/topic/fp94 著作权归作者所有。请勿转载和采集!