67,513
社区成员
发帖
与我相关
我的任务
分享
public static void fun() throws Exception{
File file = new File("d:" + File.separator+"xu");
File zipFile = new File("d:" + File.separator+"xu.zip");
ZipOutputStream zipOut = null;
zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
String name = "";
putEntry(file,zipOut,name);
zipOut.close();
}
public static void putEntry(File file,ZipOutputStream zipOut,String name) throws Exception{
if(file.exists()){
if(file.isDirectory()){
//递归
name = name + file.getName() + File.separator;
ZipEntry zipEntry = new ZipEntry(name);
zipOut.putNextEntry(zipEntry);
System.out.println("此时的file是不是目录呢:" + file.isDirectory() +", 此时的zipEntry是不是目录呢:" + zipEntry.isDirectory());
File lists [] = file.listFiles();
for(int i = 0;i<lists.length;i++){
putEntry(lists[i],zipOut,name);
}
}else{
ZipEntry zipEntry = new ZipEntry(name + file.getName());
zipOut.putNextEntry(zipEntry);
System.out.println("此时的file是不是目录呢:" + file.isDirectory() +", 此时的zipEntry是不是目录呢:" + zipEntry.isDirectory());
int temp = 0;
InputStream input = null;
input = new FileInputStream(file);
while((temp = input.read()) != -1){
zipOut.write(temp);
}
input.close();
}
}
}
public static void fun() throws Exception{
File file = new File("d:" + File.separator + "xu.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.isDirectory());
System.out.println("解压缩" + entry.getName() + "文件。"); //
outFile = new File("d:" + File.separator + entry.getName()); //定义输出的文件路径
if(!outFile.getParentFile().exists()){ //如果输出文件夹不存在
outFile.getParentFile().mkdir(); //创建文件夹
}
if(!outFile.exists()){ //判断输出文件是否存在
if(entry.isDirectory()){
outFile.mkdir();
System.out.println("我是一个目录,正在创建");
}else{
outFile.createNewFile(); //创建文件
System.out.println("我是一个普普通通的文件,正在创建");
input = zipFile.getInputStream(entry); //得到每一个实体的输入流
out = new FileOutputStream(outFile); //实例化文件输出流
int temp = 0;
while((temp = input.read()) != -1){
out.write(temp);
}
input.close();
out.close();
}
}
}
}