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.txtfile2.txt、...,文件内容为This is file 1This 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);
            }