做一个上传zip文件的东西。
代码如下:
@Test
public void testZip() throws Exception{
FileOutputStream fos = null;
ZipInputStream zis = null;
ZipEntry entry = null;
File inFile = new File("D:\\Archive.zip");
zis = new ZipInputStream(new FileInputStream(inFile));
while((entry=zis.getNextEntry())!=null){
//始终进不到这里
System.out.println(entry.getName());
}
if(zis != null){
zis.close();
}
}
显示zis.getNextEntry()一直都是null。
但是zis不为null
D:\\Archive.zip 这个文件下面有5个.text文件。
代码如下:
@Test
public void testZip() throws Exception{
FileOutputStream fos = null;
ZipInputStream zis = null;
ZipEntry entry = null;
File inFile = new File("D:\\Archive.zip");
zis = new ZipInputStream(new FileInputStream(inFile));
while((entry=zis.getNextEntry())!=null){
//始终进不到这里
System.out.println(entry.getName());
}
if(zis != null){
zis.close();
}
}
显示zis.getNextEntry()一直都是null。
但是zis不为null
D:\\Archive.zip 这个文件下面有5个.text文件。
没问题,检查一下zip格式是否正确...
java的zip解压缩不支持中文命名的ZipEntry,遇中文会报错或乱码。
可以考虑apache的的api。
有的话,试试楼上说的apache的api。
指定正确的encode再试试看。
import java.io.OutputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipFile ;
import java.util.zip.ZipInputStream ;
import java.io.FileInputStream ;
import java.io.FileOutputStream ;
public class ZipInputStreamDemo02{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldndir.zip") ; // 定义压缩文件名称
File outFile = null ; // 输出文件的时候要有文件夹的操作
ZipFile zipFile = new ZipFile(file) ; // 实例化ZipFile对象
ZipInputStream zipInput = null ; // 定义压缩输入流
OutputStream out = null ; // 定义输出流,用于输出每一个实体内容
InputStream input = null ; // 定义输入流,读取每一个ZipEntry
ZipEntry entry = null ; // 每一个压缩实体
zipInput = new ZipInputStream(new FileInputStream(file)) ; // 实例化ZIpInputStream
while((entry = zipInput.getNextEntry())!=null){ // 得到一个压缩实体
System.out.println("解压缩" + entry.getName() + "文件。") ;
outFile = new File("d:" + File.separator + entry.getName()) ; // 定义输出的文件路径
if(!outFile.getParentFile().exists()){ // 如果输出文件夹不存在
outFile.getParentFile().mkdir() ; // 创建文件夹
}
if(!outFile.exists()){ // 判断输出文件是否存在
outFile.createNewFile() ; // 创建文件
}
input = zipFile.getInputStream(entry) ; // 得到每一个实体的输入流
out = new FileOutputStream(outFile) ; // 实例化文件输出流
int temp = 0 ;
while((temp=input.read())!=-1){
out.write(temp) ;
}
input.close() ; // 关闭输入流
out.close() ; // 关闭输出流
}
input.close() ;
}
};贴个完整的解压缩文件代码,lz看是否少了哪个步骤,再结合2楼的建议,可以搞定