lemon
文章6
标签4
分类4
Java常用文件操作

Java常用文件操作

Java常用文件操作

多个文件打ZIP压缩包

public class ZipUtil {

    /**
     * 获取压缩文件
     * @param map 文件名+文件流
     * @param zipName 压缩文件名称:例如test.zip
     * @return
     * @throws IOException
     */
    public static File getZipFile(Map<String, InputStream> map, String zipName) throws IOException {
        File zipFile = new File(zipName);
        if(!zipFile.exists()){
            zipFile.createNewFile();
        }
        zip(zipFile, map);
        return zipFile;
    }

    /**
     *
     * @param zipFile 压缩文件
     * @param map 要压缩的文件集合
     * @throws IOException
     */
    public static void zip(File zipFile, Map<String, InputStream> map) throws IOException {
        FileOutputStream fos = new FileOutputStream(zipFile);
        ZipOutputStream zipOutputStream = new ZipOutputStream(fos);
        byte[] buffer = new byte[1024];

        for (Map.Entry<String, InputStream> data : map.entrySet()) {
            //文件名
            String fileName = data.getKey();
            //文件流
            InputStream inputStream = data.getValue();

            ZipEntry zEntry  = new ZipEntry(fileName);

            zipOutputStream.putNextEntry(zEntry);

            int nNumber;
            while ((nNumber = inputStream.read(buffer)) != -1) {
                zipOutputStream.write(buffer, 0, nNumber);
            }
            zipOutputStream.closeEntry();
        }
        zipOutputStream.close();
    }
}

文件下载

import cn.hutool.core.io.FileUtil;

public class ZipUtil {
    public ResponseEntity download(InputStream inputStream, String fileName) {
        Resource resource = new InputStreamResource(inputStream);

        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        String header = request.getHeader("User-Agent");
        // 避免空指针
        header = header == null ? "" : header.toUpperCase();
        HttpStatus status;
        if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
            fileName = UrlUtil.encodeURL(fileName, Charsets.UTF_8);
            status = HttpStatus.OK;
        } else {
            fileName = new String(fileName.getBytes(Charsets.UTF_8), Charsets.ISO_8859_1);
            status = HttpStatus.CREATED;
        }
        HttpHeaders headers = new HttpHeaders();
        headers.setContentDispositionFormData("attachment", fileName);
        String mimeType = FileUtil.getMimeType(fileName);
        headers.setContentType(MediaType.parseMediaType(mimeType));
        return new ResponseEntity(resource, headers, status);
    }
}