方法1:
//filepath想要壓縮文件的地址
//zippath輸出壓縮文件的地址
private void GetFileToZip(string filepath,string zippath)
{ FileStream fs = File.OpenRead(filepath);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close(); FileStream ZipFile = File.Create(zippath);
ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
ZipEntry ZipEntry = new ZipEntry(輸出的文件名稱);
ZipStream.PutNextEntry(ZipEntry);
ZipStream.SetLevel(6); ZipStream.Write(buffer, 0, buffer.Length);
ZipStream.Finish();
ZipStream.Close();
}
方法2:
private void FileToZip(string path,string address)
{
string name = openFileDialog1.FileName.Substring(openFileDialog1.FileName.LastIndexOf("\\")+1);
FileStream StreamToZip = new FileStream(path, FileMode.Open, FileAccess.Read);
FileStream ZipFile = File.Create(address);
ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
//壓縮文件
ZipEntry ZipEntry = new ZipEntry(name);
ZipStream.PutNextEntry(ZipEntry);
ZipStream.SetLevel(6);
byte[] buffer = new byte[StreamToZip.Length];
StreamToZip.Read(buffer, 0, Convert.ToInt32(StreamToZip.Length));
ZipStream.Write(buffer, 0, Convert.ToInt32(StreamToZip.Length));
ZipStream.Finish();
ZipStream.Close();
StreamToZip.Close(); }
C#解壓文件
private void ZipToFile(string path, string addres)
{
ZipInputStream s = new ZipInputStream(File.OpenRead(path));
ZipEntry fileEntry;
while ((fileEntry = s.GetNextEntry()) != null)
{
string filename = Path.GetFileName(fileEntry.Name);
if (filename != "")
{
filename = addres + "\\" + filename;
FileStream streamWriter = File.Create(filename);
int size = 2048;
byte[] buffer = new byte[size]; size = s.Read(buffer, 0, size);
streamWriter.Write(buffer, 0, size);
streamWriter.Close();
}
}
s.Close();
}
C#壓縮目錄
方法1:
//arg[0]要壓縮的目錄
//arg[1]輸出的壓縮文件
private void DirectoryToZip(string path, string address)
{
//獲取當前文件夾中所有的文件
string[] filenames = Directory.GetFiles(path);
Crc32 crc = new Crc32();
//創建輸出文件(ZIP格式的文件)
ZipOutputStream zos = new ZipOutputStream(File.Create(address));
zos.SetLevel(6);
//遍歷所有的文件
foreach (string name in filenames)
{
FileStream fs = File.OpenRead(name);
byte[] buffer = new byte[fs.Length];
//讀取文件
fs.Read(buffer, 0, Convert.ToInt32(fs.Length));
//獲取文件的文件名稱和後綴名
string file = Path.GetFileName(name);
//輸出文件的名稱
ZipEntry entry = new ZipEntry(file);
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
zos.PutNextEntry(entry);
zos.Write(buffer, 0, Convert.ToInt32(fs.Length));
fs.Close();
}
zos.Finish();
zos.Close();
} C#讀取壓縮文件(將壓縮文件轉換為二進制)
private void GetZipToByte(){
string path = @"C:\Documents and Settings\Administrator\桌面\文件.rar";
FileStream fs = new FileStream(path, FileMode.Open);
bytes = new byte[fs.Length];
int count = Convert.ToInt32(fs.Length);
fs.Read(bytes, 0, count);
}
C#將二進制轉換為壓縮文件
private void GetByteToZip()
{
string path = @"F:\dom.rar";//壓縮文件的地址
File.WriteAllBytes(path, bytes);
}