在Java中,我們經(jīng)常需要解壓縮一些文件,其中rar包和zip包是比較常見的格式。下面介紹一下如何使用Java來解析rar包和zip包。
對(duì)于rar包,Java本身是不支持解析的,需要使用第三方庫來實(shí)現(xiàn)。在這里推薦使用junrar庫。下面是一個(gè)簡單的使用示例:
File rarFile = new File("example.rar"); Archive archive = new Archive(rarFile); for (FileHeader fileHeader : archive.getFileHeaders()) { File file = new File(fileHeader.getFileNameW()); FileOutputStream outputStream = new FileOutputStream(file); archive.extractFile(fileHeader, outputStream); outputStream.close(); } archive.close();
以上代碼中,我們首先創(chuàng)建了一個(gè)rar文件的File對(duì)象,然后使用Archive類來打開這個(gè)文件。接下來的循環(huán)遍歷了rar包中所有的文件,取出每個(gè)文件的FileHeader,然后使用extractFile方法將其解壓到對(duì)應(yīng)的File中。
對(duì)于zip包,Java提供了java.util.zip包來支持解析。下面是一個(gè)示例:
File zipFile = new File("example.zip"); ZipInputStream inputStream = new ZipInputStream(new FileInputStream(zipFile)); ZipEntry zipEntry = inputStream.getNextEntry(); while (zipEntry != null) { File file = new File(zipEntry.getName()); FileOutputStream outputStream = new FileOutputStream(file); byte[] buffer = new byte[1024]; int len; while ((len = inputStream.read(buffer)) >0) { outputStream.write(buffer, 0, len); } outputStream.close(); zipEntry = inputStream.getNextEntry(); } inputStream.close();
以上代碼中,我們首先創(chuàng)建了一個(gè)zip文件的File對(duì)象,并使用ZipInputStream來打開這個(gè)文件。然后使用getNextEntry方法獲取每個(gè)文件的ZipEntry,循環(huán)遍歷所有文件,將其解壓到對(duì)應(yīng)的File中。