在文檔管理系統中需要實現zip文件的預覽,一般的做法是將zip文件解壓,然後獲取此目錄下的文件信息,此處代碼為利用代碼直接實現zip文件的解壓:
<code>import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; /** * * * @author Kaven Mei * @company KAVEN(www.kaven.cn) * @date 2020年4月10日 上午9:44:45 * @version 1.0 */ public class ZipTest { private static ZipFile zipFile; public static void main(String[] args) { String directoryPath = "F:/zipFile/";// 解壓路徑 String filePath = "F:/zipFile/nginx-1.8.1.zip";// 解壓文件 try { printZipTxt(filePath); unZipFiles(filePath, directoryPath); } catch (Exception e) { e.printStackTrace(); } } /** * 獲取zip文件中的內容 * * @param zipPathStr * @throws IOException */ public static void printZipTxt(String zipPathStr) throws IOException { zipFile = new ZipFile(zipPathStr); for (Enumeration extends ZipEntry> e = zipFile.entries(); e.hasMoreElements();) { ZipEntry entry = e.nextElement(); System.out.println("文件名:" + entry.getName() + ", 內容如下:"); if (entry.getName().toLowerCase().endsWith(".txt")) { InputStream is = null; is = zipFile.getInputStream(entry); byte[] b = new byte[1024]; int leng = -1; String txtStr = ""; while ((leng = is.read(b)) != -1) { txtStr += new String(b, 0, leng); } System.out.println(txtStr); if (is != null) { is.close(); } } } } /** * 創建zip中文件目錄 * * @param zipPath * @param descDir * @throws IOException */ public static void unZipFiles(String zipPath, String descDir) throws IOException { unZipFiles(new File(zipPath), descDir); } /** * 解壓內容 * * @param zipFile * @param descDir * @throws IOException */ @SuppressWarnings("rawtypes") public static void unZipFiles(File fileZip, String descDir) throws IOException { File pathFile = new File(descDir); if (!pathFile.exists()) { pathFile.mkdirs(); } zipFile = new ZipFile(fileZip); for (Enumeration entries = zipFile.entries(); entries.hasMoreElements();) { ZipEntry entry = (ZipEntry) entries.nextElement(); String zipEntryName = entry.getName(); InputStream in = zipFile.getInputStream(entry); String outPath = (descDir + zipEntryName).replaceAll("\\*", "/"); // 判斷路徑是否存在,不存在則創建文件路徑 File file = new File(outPath.substring(0, outPath.lastIndexOf('/'))); if (!file.exists()) { file.mkdirs(); } // 判斷文件全路徑是否為文件夾,如果是上面已經上傳,不需要解壓 if (new File(outPath).isDirectory()) { continue; } // 輸出文件路徑信息 System.out.println(outPath); OutputStream out = new FileOutputStream(outPath); byte[] buf1 = new byte[1024]; int len; while ((len = in.read(buf1)) > 0) { out.write(buf1, 0, len); } in.close(); out.close(); } System.out.println("******************解壓完畢********************"); } }/<code>
關鍵字: import File IOException