MultipartFileのzipファイルの解凍方法は?

MultipartFile(Springフレームワークのクラスで、アップロードされたファイルを処理するために使用されます)を解凍するには、java.util.zip.ZipInputStreamクラスを使用できます。以下は、MultipartFileのzipファイルを解凍するサンプルコードです。

import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ZipFileUtil {

    public static void unzip(MultipartFile file, String destination) throws IOException {
        try (ZipInputStream zipInputStream = new ZipInputStream(file.getInputStream())) {
            byte[] buffer = new byte[1024];
            ZipEntry zipEntry = zipInputStream.getNextEntry();
            while (zipEntry != null) {
                String fileName = zipEntry.getName();
                File newFile = new File(destination + File.separator + fileName);
                if (zipEntry.isDirectory()) {
                    newFile.mkdirs();
                } else {
                    // 如果父目录不存在,则创建父目录
                    File parent = newFile.getParentFile();
                    if (!parent.exists()) {
                        parent.mkdirs();
                    }
                    try (FileOutputStream fos = new FileOutputStream(newFile)) {
                        int length;
                        while ((length = zipInputStream.read(buffer)) > 0) {
                            fos.write(buffer, 0, length);
                        }
                    }
                }
                zipEntry = zipInputStream.getNextEntry();
            }
        }
    }
}

このunzipメソッドは、指定されたdestinationパスにzipファイルを解凍します。MultipartFileオブジェクトとdestinationパスを渡すだけで大丈夫です。ただし、IOException例外を処理する必要があります。

使用例:

import org.springframework.web.multipart.MultipartFile;

public class Main {

    public static void main(String[] args) {
        MultipartFile file = ...; // 获取上传的 MultipartFile 对象
        String destination = "C:\\path\\to\\destination"; // 指定解压路径
        try {
            ZipFileUtil.unzip(file, destination);
            // 解压成功
        } catch (IOException e) {
            e.printStackTrace();
            // 解压失败
        }
    }
}

適切な依存関係、例えばspring-webやcommons-ioをインポートしていることを確認してください。

bannerAds