package com.xcong.farmer.cms.common.utils; import java.io.*; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; /** * @author wzy * @date 2022-07-04 **/ public class FileUtils { public static String path(String path) { if (!path.endsWith("/")) { return path + "/"; } return path; } public static String path(String path, String fileName) { File file = new File(path); if (file.exists() && !file.isDirectory()){ return ""; } if (!file.exists()) { file.mkdirs(); } String dir = path(path); return dir + fileName; } public static void zipUpload(String zipPath, String templateDir) throws IOException { FileInputStream fis = new FileInputStream(zipPath); ZipInputStream zipIs = new ZipInputStream(fis); ZipEntry ze = null; try { while ((ze = zipIs.getNextEntry()) != null) { File zfile = new File(path(templateDir, ze.getName())); if (ze.isDirectory()) { if (!zfile.exists()) { zfile.mkdirs(); } zipIs.closeEntry(); } else { byte[] data = new byte[1024]; FileOutputStream fos = new FileOutputStream(zfile); int i = 0; while ((i = zipIs.read(data)) != -1) { fos.write(data, 0, i); } zipIs.closeEntry(); fos.close(); } } fis.close(); zipIs.close(); } catch (Exception e) { e.printStackTrace(); } } public static void upload(File file, String dir) { if (file.isDirectory()) { File[] files = file.listFiles(); if (files == null) { return; } for (File dirFile : files) { upload(dirFile, path(dir, dirFile.getName())); } } else { outputFile(file, dir); } } public static void outputFile(File file, String outputDir) { try { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); int count; int buffer = 1024; byte[] dataByte = new byte[buffer]; FileOutputStream out = new FileOutputStream(path(outputDir, file.getName())); BufferedOutputStream bos = new BufferedOutputStream(out, buffer); while((count = bis.read(dataByte, 0, buffer)) != -1) { bos.write(dataByte, 0 ,count); } bos.flush(); bos.close(); bis.close(); } catch (IOException e) { e.printStackTrace(); } } }