java上傳檔案,壓縮,解壓儲存
阿新 • • 發佈:2019-01-11
<pre name="code" class="html">import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.List; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; import com.xbrc.common.misc.OperationException; import com.xbrc.common.misc.OperationException.ExceptionType;
/** * 打包指定檔案列表為zip * * @param files * @param strZipFileFullPath * @throws Exception */ public static void zipFiles(String strZipFileFullPath, List<File> files) { try { File file = new File(strZipFileFullPath); if (!file.exists()) { file.createNewFile(); } FileOutputStream fous = new FileOutputStream(file); ZipOutputStream zipOut = new ZipOutputStream(fous); zipFile(files, zipOut); zipOut.close(); fous.close(); } catch (Exception e) { e.printStackTrace(); } }
/**
* 解壓
*
* @param directory
* 解壓完儲存的路徑
* @param zip
* 壓縮包檔案
*/
public static void unZipFile(String directory, File zip) { try { int count = -1; int buffer = 2048; File file = null; InputStream is = null; FileOutputStream fos = null; BufferedOutputStream bos = null; ZipFile zipFile = new ZipFile(zip, "GBK"); Enumeration en = zipFile.getEntries(); createFolder(directory); while (en.hasMoreElements()) { byte buf[] = new byte[buffer]; ZipEntry entry = (ZipEntry) en.nextElement(); String fileName = entry.getName(); String filePath = directory +"/"+ fileName; if(entry.isDirectory()){ createFolder(filePath); }else{ file = new File(filePath); file.createNewFile(); is = zipFile.getInputStream(entry); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos, buffer); while ((count = is.read(buf)) > -1) { bos.write(buf, 0, count); } bos.close(); fos.close(); is.close(); } } zipFile.close(); } catch (IOException e) { e.printStackTrace(); } }
private static void createFolder(String path) {
try {
File uploadFilePath = new File(path);
if (uploadFilePath.exists() == false) {
uploadFilePath.mkdirs();
}
} catch (Exception ex) {
throw new OperationException(ExceptionType.ERROR, "建立資料夾異常");
}
}