ZipHelper壓縮解壓縮

2021-07-25 16:00:14 字數 3142 閱讀 2773

using system;

using system.collections.generic;

using system.text;

using icsharpcode.sharpziplib.zip;

using system.io;

using icsharpcode.sharpziplib.checksums;

namespace help

if (!directory.exists(zipedfolder))

zipinputstream sinput = new zipinputstream(file.openread(filetoupzip));

trystring newdir = path.getdirectoryname(filename);

if (!directory.exists(newdir))

filestream streamwriter = file.create(filename);

trystreamwriter.write(data, 0, size);}}

finally}}

}finally

}/// /// 遞迴壓縮資料夾方法

///

/// 需要壓縮的檔案位置

/// 壓縮輸出流物件

/// 父資料夾名稱

private static bool zipfiledictory(string foldertozip, zipoutputstream s, string parentfoldername)

}catch

finally

if (entry != null)

gc.collect();

gc.collect(1);

}folders = directory.getdirectories(foldertozip);

foreach (string folder in folders)

}return res;

}/// /// 壓縮目錄

///

/// 待壓縮的資料夾,全路徑格式

/// 壓縮後的檔名,全路徑格式

///

private static bool zipfiledictory(string foldertozip, string zipedfile, int level)

zipoutputstream s = new zipoutputstream(file.create(zipedfile));

s.setlevel(level);

res = zipfiledictory(foldertozip, s, "");

s.finish();

s.close();

return res;

}/// /// 壓縮檔案

///

/// 要進行壓縮的檔名

/// 壓縮後生成的壓縮檔案名

/// 壓縮檔案操作是否成功,成功返回true,不成功返回false

private static bool zipfile(string filetozip, string zipedfile, int level)

//filestream fs = null;

filestream zipfile = null;

zipoutputstream zipstream = null;

zipentry zipentry = null;

bool res = true;

trycatch

finally

if (zipstream != null)

if (zipfile != null)

gc.collect();

gc.collect(1);

}return res;

}/// /// 壓縮檔案 和 資料夾

///

/// 待壓縮的檔案或資料夾,全路徑格式

/// 壓縮後生成的壓縮檔案名,全路徑格式

/// 層級數量

/// 返回壓縮結果,成功返回true,失敗返回false

public static bool zip(string filetozip, string zipedfile, int level)

else if (file.exists(filetozip))

else

}/// /// 壓縮多個檔案,用(1,2,4個引數即可)解壓多個檔案

///

/// 壓縮檔案名稱

/// 多個檔案的陣列,全路徑格式

/// 解壓路徑,空字元是不設定解壓路徑

/// 解壓的密碼,空字元是不要密碼

/// 返回解壓檔案數量

public static int zipfiles(string destfolder, string srcfiles, string foldername, string password)

foreach (string file in srcfiles)

streamwriter = file.openread(file);

byte buffer = new byte[streamwriter.length];

streamwriter.read(buffer, 0, buffer.length);

streamwriter.close();

crc32.reset();

crc32.update(buffer);

zipentry zipentry = new zipentry(path.combine(foldername, path.getfilename(file)));

zipentry.datetime = datetime.now;

zipentry.size = buffer.length;

zipentry.crc = crc32.value;

zipstream.putnextentry(zipentry);

zipstream.write(buffer, 0, buffer.length);

count++;}}

finally

if (zipstream != null)

}return count;}}

}

壓縮解壓縮

壓縮 壓縮後的檔名 包含物理路徑 待壓縮的資料夾 包含物理路徑 public static void packfiles string filename,string directory catch exception 解壓縮 待解壓檔名 包含物理路徑 解壓到哪個目錄中 包含物理路徑 public ...

壓縮 解壓縮

linux使用最廣泛的壓縮格式位gz,使用gzip命令進行壓縮和解壓縮 1 gzip,gunzip,壓縮 解壓縮檔案,compress or expand files gzip acdfhkllnnrtvv19 s suffix name gunzip acfhkllnnrtvv s suffix ...

Linux 壓縮 解壓縮

1.以.a為副檔名的檔案 tar xv file.a 2.以.z為副檔名的檔案 uncompress file.z 3.以.gz為副檔名的檔案 gunzip file.gz 4.以.bz2為副檔名的檔案 bunzip2 file.bz2 5.以.tar.z為副檔名的檔案 tar xvzf file....