Java批量创建文件并压缩
在日常开发工作中,我们经常会遇到需要批量创建文件并压缩的需求。比如,我们可能需要批量生成测试数据文件,或者将一些数据文件打包成压缩文件进行传输或存储。本文将介绍如何使用Java来实现批量创建文件并压缩的功能,并提供相应的代码示例。
创建文件
要批量创建文件,我们可以使用Java的File
类来实现。下面是一个示例代码,演示了如何创建多个文件并写入数据:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class FileCreator {
public static void main(String[] args) {
String basePath = "C:/data/";
int numFiles = 10;
for (int i = 1; i <= numFiles; i++) {
String fileName = "file" + i + ".txt";
String filePath = basePath + fileName;
try {
File file = new File(filePath);
FileWriter writer = new FileWriter(file);
writer.write("This is file " + i);
writer.close();
System.out.println("Created file: " + filePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
上述代码中,我们首先定义了一个基础路径basePath
,用于指定文件存放的目录。然后,我们通过循环创建多个文件,文件名依次为file1.txt
、file2.txt
、...,文件内容为This is file 1
、This is file 2
、...。每次创建文件后,我们将文件路径打印出来,以便查看文件是否成功创建。
压缩文件
要压缩文件,我们可以使用Java的ZipOutputStream
类来实现。下面是一个示例代码,演示了如何将多个文件压缩成一个压缩文件:
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FileCompressor {
public static void main(String[] args) {
String basePath = "C:/data/";
String zipFile = "files.zip";
int numFiles = 10;
try {
FileOutputStream fos = new FileOutputStream(basePath + zipFile);
ZipOutputStream zos = new ZipOutputStream(fos);
for (int i = 1; i <= numFiles; i++) {
String fileName = "file" + i + ".txt";
String filePath = basePath + fileName;
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
fis.close();
zos.closeEntry();
System.out.println("Added file to zip: " + filePath);
}
zos.close();
System.out.println("Created zip file: " + basePath + zipFile);
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,我们首先定义了一个基础路径basePath
和一个压缩文件名zipFile
,用于指定文件的来源和压缩文件的保存位置。然后,我们通过循环将多个文件依次添加到压缩文件中,每个文件的文件名和文件路径需要与之前创建文件的方式保持一致。添加文件到压缩文件中时,我们首先创建一个ZipEntry
对象表示文件,然后将文件内容写入ZipOutputStream
中。最后,我们关闭ZipOutputStream
,完成压缩文件的创建。
完整示例代码
下面是一个完整的示例代码,将批量创建文件和压缩文件的功能整合在一起:
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FileCreatorAndCompressor {
public static void main(String[] args) {
String basePath = "C:/data/";
String zipFile = "files.zip";
int numFiles = 10;
for (int i = 1; i <= numFiles; i++) {
String fileName = "file" + i + ".txt";
String filePath = basePath + fileName;
try {
File file = new File(filePath);
FileWriter writer = new FileWriter(file);
writer.write("This is file " + i);
writer.close();
System.out.println("Created file: " + filePath);
}