Java io流之MultipartFile转换为ZipFile

1、在文件上传中,通常我们会用MultipartFile进行接收;如果上传的为zip包,我们需要将file转换为zip进行操作。

2、案例加注释

package com.xu.io;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.UUID;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
 * @author admin
 */
public class FileUtils {
    /**
     * 将MultipartFile转换为zipFile,用断言过滤
     * @param inFile
     */
    public void checkZip(MultipartFile inFile) {
        InputStream fileStream = null;
        File file = null;
        Stream signStream = null;
        Stream zipStream = null;
        ZipFile zipFile = null;
        //临时文件

        Path path = Paths.get(System.getProperty("java.io.tmpdir"), inFile.getName() + UUID.randomUUID() + "zip");
        file = path.toFile();
        try {
            fileStream = inFile.getInputStream();
            org.apache.commons.io.FileUtils.copyInputStreamToFile(fileStream, file);
            zipFile = new ZipFile(file, Charset.defaultCharset());
            signStream = zipFile.stream();
            zipStream = zipFile.stream();
            //断言
            Predicate signTxt = ze -> ze.getName().contains("sign,txt");
            Predicate zipTxt = ze -> ze.getName().endsWith(".zip");
            //,过滤
            Optional signInfo = (Optional) signStream.filter(signTxt).findFirst();
            Optional zipInfo = (Optional) zipStream.filter(zipTxt).findFirst();
            if (signInfo.isPresent() && zipInfo.isPresent()) {
                System.out.println("hello");
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //关闭流

                fileStream.close();
                signStream.close();
                zipStream.close();
                zipFile.close();
                //删除临时文件

                org.apache.commons.io.FileUtils.deleteQuietly(file);
            } catch (IOException e) {
                e.printStackTrace();
            }

        }


    }
}

你可能感兴趣的:(java基础,Java后端开发)