用java中的java.util.zip包读取压缩文件
2012-04-19 16:08
399 查看
最近下载了点数据,压缩包的形式下几十兆,一解压就1G左右了,如果一个个解压再看内容实在是伤不起,于是想有没有不解压而读取压缩文件内容的方式,查阅网上资料,发现java中的java.util.zip包中提供了处理zip文件的API,小练习了一下,代码如下:
通过这样的方式,可以不用将文件解压出来就从控制台看到文件的内容。其中主要是使用了ZipFile、ZipEntry这两个类,其他过程和一般文件的读取差不多,本来看到API中有个ZipInputStream想用用的,没用成暂时也不想折腾,如果有用过的欢迎交流。
另外,我下载的压缩文件是bz2格式的,但我上面所写的这个程序貌似能读取zip和rar格式的,不能读取.bz2格式的文件(否则就会在实例化ZipFile的那行报错,“java.util.zip.ZipException: error in opening zip file”,网上找了下也没有好的方法,只好继续悲催地解压了再看了,不知道谁有没有读取bz2格式文件的好方法。
import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; /** * * @author Qingxia Liu * */ public class ZipTest { /** * 为文件类型分类,以适当形式调用读取函数 * 调用格式,如ZipTest.display("F:\\DBpedia\\tst\\my.zip"); * @param filename 压缩文件的文件名 */ public static void display(String filename){ File file = new File(filename); if(file.isDirectory()){ File[] list = file.listFiles(); for(int i=0; i<list.length; i++){ ZipTest.display(list[i]); } }else{ ZipTest.display(file); } } /** * 依次读取压缩包中各文件内容 * @param file */ public static void display(File file){ String entryname = "abc"; try { // System.out.println(file.toString()); ZipFile zip = new ZipFile(file);//由指定的File对象打开供阅读的ZIP文件 Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zip.entries();//获取zip文件中的各条目(子文件) // ZipInputStream zis = new ZipInputStream(zip.getInputStream(zip.entries().nextElement())); while(entries.hasMoreElements()){//依次访问各条目 ZipEntry ze = (ZipEntry) entries.nextElement(); BufferedReader br = new BufferedReader(new InputStreamReader(zip.getInputStream(ze))); System.out.println("\n"+ze.getName()+":"); String line ; while((line = br.readLine()) != null){ System.out.println(line); } br.close(); } } catch (ZipException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 读取压缩包file中,指定文件名entryname的文件的内容 * @param file * @param entryname */ public static void display(File file, String entryname){ try { // System.out.println(file.toString()); ZipFile zip = new ZipFile(file); // ZipInputStream zis = new ZipInputStream(zip.getInputStream(zip.entries().nextElement())); ZipEntry ze = zip.getEntry(entryname);//根据文件名取得压缩包中的对应条目 System.out.println(ze.getName()+":"); BufferedReader br = new BufferedReader(new InputStreamReader(zip.getInputStream(ze))); String line ; while((line = br.readLine()) != null){ System.out.println(line); } br.close(); } catch (ZipException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args){ String filename = "F:\\DBpedia\\tst\\my.zip"; ZipTest.display(filename); } }
通过这样的方式,可以不用将文件解压出来就从控制台看到文件的内容。其中主要是使用了ZipFile、ZipEntry这两个类,其他过程和一般文件的读取差不多,本来看到API中有个ZipInputStream想用用的,没用成暂时也不想折腾,如果有用过的欢迎交流。
另外,我下载的压缩文件是bz2格式的,但我上面所写的这个程序貌似能读取zip和rar格式的,不能读取.bz2格式的文件(否则就会在实例化ZipFile的那行报错,“java.util.zip.ZipException: error in opening zip file”,网上找了下也没有好的方法,只好继续悲催地解压了再看了,不知道谁有没有读取bz2格式文件的好方法。
相关文章推荐
- 使用java.util.zip包压缩和解压缩文件
- Java压缩文件工具类ZipUtil使用方法代码示例
- JAVA读取zip文件 JAVA读取压缩文件 解压zip里面的指定格式文件
- java读取zip文件和压缩zip文件
- java.util.zip包在解压缩文件方面入门使用
- 使用java.util.zip包压缩和解压缩文件
- java直接读取.zip压缩文件(一)
- java不解压读取linux服务器上的zip以及tar.gz压缩文件
- java.util.zip 的解压和压缩文件夹
- java.util.zip包无法正常解压rar软件压缩的rar文件
- JAVA实现压缩文件的方法(使用java.util.zip.*)
- Java压缩和解压文件工具类ZipUtil
- java.util.zip压缩打包文件总结二: ZIP解压技术
- java中不解压读取zip压缩文件
- java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
- 使用java.util.zip压缩、解压文件
- Java文件压缩与解压之java.util.zip的使用
- 非java.util.zip,使用ant.jar制作zip压缩文件,以及相关中文解决方法
- Java采用readInt()方法直接读取特定的ZIP压缩文件出现了奇怪的问题
- java操作文件(压缩文件,导出zip,删除zip,写入文件,读取文件)