解压与压缩文件zip 辛苦总结

一开始,简简单单的几行代码就可以实现zip压缩,我啊,也傻了这些!
OutputStream ops=new FileOutputStream(tarZip);
ZipOutputStream zipops=new ZipOutputStream(ops);
//建立一个zip文件条目
ZipEntry entry = new ZipEntry("haha.txt");
//进行保存zipoutputStream 流中
zipops.putNextEntry(entry);
zipops.write("yanming".getBytes(),0, 4);
zipops.close();
这是一个非常简单的,zip制作压缩包,弄明白这些,你就可以开始编码了!在这里,我共享我的全部代码,希望对学者有所帮助,如有不懂---QQ:962589149
public static void zipFile(String dirPath,File file,ZipOutputStream zipops) throws Exception
   {

byte[] b = new byte[1024];
if(file.isDirectory())//是目录
{
ZipEntry ze = new ZipEntry(dirPath + file.getName() + "/");
zipops.putNextEntry(ze);
//迭代
for (int i = 0; i < file.listFiles().length; i++) {
zipFile(dirPath + file.getName() + "/", file.listFiles()[i],zipops);
}
}else//是文件时
{
int p=0;
FileInputStream fis=null;
try
   {
//进行读取
fis = new FileInputStream(file);
ZipEntry ze = new ZipEntry(dirPath + file.getName());
zipops.putNextEntry(ze);
  while ((p = (fis.read(b))) > 0) {
    zipops.write(b, 0, p);
}
}catch(Exception ex){
  throw new Exception("压缩文件时出现错误(zipFile)");
}finally
{
if(fis!=null)
{
fis.close();
}
}
}
   }
public static boolean  doComPress(String dirPath,String tarZip) throws Exception
{
ZipOutputStream zipops=null;//zip输出流
//目标zip文件
OutputStream ops=new FileOutputStream(tarZip);
zipops=new ZipOutputStream(ops);
ZipEntry entry=null;
try
{
File dirFile=new File(dirPath);
if (!dirFile.isDirectory()) {
    throw new Exception("传入的不是文件夹目录");
}
//获取根目录
String dirName = dirPath.substring(dirPath.lastIndexOf("/") + 1);
//处理C://yanming//
if (dirName == null || "".equals(dirName)) {
     String subStr = dirPath.substring(0, dirPath.length() - 2);
     dirName = subStr.substring(subStr.lastIndexOf("/") + 1);
  }
entry = new ZipEntry(dirName+"/");
zipops.putNextEntry(entry);
//获取子文件目录
File[]  files=dirFile.listFiles();
//进行迭代
for(int i=0;i<files.length;i++)
{
zipFile(dirName + "/", files[i], zipops);
}
}catch(Exception ex)
{

}finally
{
if(zipops!=null)
{
zipops.close();
}
}
return false;
}

你可能感兴趣的:(C++,c,qq,C#)