就我的电脑而言
压缩的例子
import java.io.*;
import java.util.zip.*;
public class Fifteen5 {
private void zip(String zipFileName,File inputFile) throws Exception{
ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
zip(out,inputFile,"");
System.out.println("压缩中。。。");
out.close();
}
private void zip(ZipOutputStream out,File inputFile,String base) throws Exception{
if(inputFile.isDirectory()){
File[] fl=inputFile.listFiles();
if(base.length()!=0){
out.putNextEntry(new ZipEntry(base+"/"));
}
for(int i=0;i<fl.length;i++){
zip(out,fl[i],base+fl[i]);
}
}else{
out.putNextEntry(new ZipEntry(base));
FileInputStream in=new FileInputStream(inputFile);
int b;
System.out.println(base);
while((b=in.read())!=-1){
out.write(b);
}
in.close();
}
}
public static void main(String[] args) {
Fifteen5 book=new Fifteen5();
try {
book.zip("D:/wangjunjie.zip",new File("D:/wangjunjie"));
System.out.println("压缩完成");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
解压的例子
package exercise;
import java.io.File;
import java.io.FileInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class Decompressing { // 创建文件
public static void main(String[] temp) {
ZipInputStream zin; // 创建ZipInputStream对象
try { // try语句捕获可能发生的异常
zin = new ZipInputStream(new FileInputStream("wangjunjie.zip"));
// 实例化对象,指明要进行解压的文件
ZipEntry entry = null; // 获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {
// 如果entry不为空,并不在同一目录下
File file = new File("D:\\" + entry.getName()); // 获取文件目录
System.out.println(file);
if (!file.exists()) { // 如果该文件不存在
file.mkdirs();// 创建文件所在文件夹
file.createNewFile(); // 创建文件
}
zin.closeEntry(); // 关闭当前entry
System.out.println(entry.getName() + "解压成功");
}
zin.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
**问题一:**在文件中多建立了一个盘
问题解决:是因为你在压缩的时候book.zip()的第二个参数多加了一个盘但是你不加他又会报错(找不到文件)那你就需要找到你的java文件存在哪里,并且在与src的文件相同的文件层建立就可以了
问题二:为什么src文件可以不用加盘就可以找到,而其他文件必须加盘,但是文件里面会多建一个盘
问题解决:是因为src在这个项目的里面所以可以找到而其它文健没有建在该项目中,所以和第一问题的措施一样建在相同的目录中就可以了