我有个愚蠢的问题,我一直没能弄清楚。有谁可以帮我?我的守则是:
String zipname = "C:/1100.zip";
String output = "C:/1100";
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
ZipFile zipFile = new ZipFile(zipname);
Enumeration<?> enumeration = zipFile.entries();
while (enumeration.hasMoreElements()) {
ZipEntry zipEntry = (ZipEntry) enumeration.nextElement();
System.out.println("Unzipping: " + zipEntry.getName());
bis = new BufferedInputStream(zipFile.getInputStream(zipEntry));
int size;
byte[] buffer = new byte[2048];它不创建文件夹,但调试显示生成的所有内容。为了创建一个文件夹,我使用了以下代码
if(!output.exists()){ output.mkdir();} // here i get an error saying filenotfoundexception
bos = new BufferedOutputStream(new FileOutputStream(new File(outPut)));
while ((size = bis.read(buffer)) != -1) {
bos.write(buffer, 0, size);
}
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
bos.flush();
bos.close();
bis.close();
}我的压缩文件包含图像: a.jpg b.jpg..。在相同的层次结构中,我有abc.xml。我需要提取压缩文件中的内容。这里有什么帮助吗。
发布于 2011-11-04 06:04:00
您的代码有几个问题: outPut在哪里声明?output不是文件而是字符串,因此exists()和mkdir()不存在。首先声明output如下:
File output = new File("C:/1100");此外,没有声明outPut (具有大P)。有点像output + File.seprator + zipEntry.getName()。
bos = new BufferedOutputStream(new FileOutputStream(output + File.seprator + zipEntry.getName()));注意,您不需要像构造函数在FileOutputStream中显示的那样,将文件传递给文献资料。
此时,如果Zip文件不包含目录,则代码应该可以工作。但是,当打开输出流时,如果zipEntry.getName()有一个目录组件(例如somedir/filename.txt),打开该流将导致一个FileNotFoundException,因为您试图创建的文件的父目录不存在。如果您希望能够处理这样的zip文件,您将在:如何在Java中递归解压缩文件?中找到您的答案。
https://stackoverflow.com/questions/8005247
复制相似问题