java怎么读取Zip和RAR里面的文件啊?

zip和RAR的解压包里面的文件,怎么能用java流读取出来,比如说RAR或zip里面有两张图片,怎么才能把他们读出来啊。不过我在java.util.zip这个包里面看见... zip和RAR的解压包里面的文件,怎么能用java流读取出来,比如说RAR或zip里面有两张图片,怎么才能把他们读出来啊。
不过我在java.util.zip这个包里面看见有,ZipFile,ZipOutputStream,ZipBundleEntry,
ZipEntry,ZipException,ZipInputStream,这几个类,但不知道这么用他们。
知道的朋友帮帮小弟,谢谢了。
展开
 我来答
匿名用户
推荐于2018-03-10
展开全部
ZipInputStream是一个指向ZIP文件的流,这个流最重要的方法就是getNextEntry方法,一个zip文件可以包含好几个被压缩的文件,这个方法的功能就是返回下一个目录项,也就是返回zip文件中的下一项,并且把流指向这个目录文件项。getNextEntry的返回值是ZipEntry,它表示zip文件中的一个项,它可以返回这个文件项的大小、名称等。你可以根据它返回的文件大小调用ZipInputStream的read方法来读取需要的字节。给你一个例子:public class ZipTest {
public static void main(String args[]) throws FileNotFoundException, IOException{
ZipInputStream zis = new ZipInputStream(new FileInputStream ("c://a.zip"));//生成读取ZIP文件的流
ZipEntry ze = zis.getNextEntry();//取得下一个文件项
long size = ze.getSize();//取得这一项的大小
FileOutputStream fos = new FileOutputStream("c://"+ze.getName());//产生输出文件对象
for(int i= 0;i<size;i++){//循环读取文件并写入输出文件对象
byte c = (byte)zis.read();
fos.write(c);
}
fos.close();
zis.close();
}
}
du瓶邪
推荐于2016-01-26 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2870万
展开全部
package test;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

public class aaaa {

public static void main(String[] args) throws Exception {
try {
readZipFile("D:\\ztree.zip");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void readZipFile(String file) throws Exception {
ZipFile zf = new ZipFile(file);
InputStream in = new BufferedInputStream(new FileInputStream(file));
ZipInputStream zin = new ZipInputStream(in);
ZipEntry ze;
while ((ze = zin.getNextEntry()) != null) {
if (ze.isDirectory()) {
} else {
System.err.println("file - " + ze.getName() + " : "
+ ze.getSize() + " bytes");
long size = ze.getSize();
if (size > 0) {
BufferedReader br = new BufferedReader(
new InputStreamReader(zf.getInputStream(ze)));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
System.out.println();
}
}
zin.closeEntry();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-08
展开全部
需要解压了才可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-08
展开全部
到底怎么读我也不知道,不过是可以的你可以参考下这个http://www.chinaunix.net/jh/26/106061.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式