c \ # DotNetZip 패 키 징 클래스 를 사용 하여 zip 파일 을 조작 합 니 다 (생 성 / 읽 기 / 업데이트) 인 스 턴 스
다운로드 한 가방 에는 dll 파일 이 많 습 니 다. 보통 Ionic. Zip. dll 을 참조 하면 됩 니 다.
그리고 이 네 임 스페이스 를 참조 하 십시오:
using Ionic.Zip;
다음은 내 가 봉 한 종류 이다.
///
/// Zip DotNetZip
///
public static class ZipUtils
{
///
/// ZIP 【 】
///
///
///
public static Stream ZipCompress(Stream sourceStream, string entryName = "zip")
{
MemoryStream compressedStream = new MemoryStream();
if (sourceStream != null)
{
long sourceOldPosition = 0;
try
{
sourceOldPosition = sourceStream.Position;
sourceStream.Position = 0;
using (ZipFile zip = new ZipFile())
{
zip.AddEntry(entryName, sourceStream);
zip.Save(compressedStream);
compressedStream.Position = 0;
}
}
catch
{
}
finally
{
try
{
sourceStream.Position = sourceOldPosition;
}
catch
{
}
}
}
return compressedStream;
}
///
/// ZIP
/// ,
///
///
///
public static Stream ZipDecompress(byte[] data)
{
Stream decompressedStream = new MemoryStream();
if (data != null)
{
try
{
MemoryStream dataStream = new MemoryStream(data);
using (ZipFile zip = ZipFile.Read(dataStream))
{
if (zip.Entries.Count > 0)
{
zip.Entries.First().Extract(decompressedStream);
// Extract ms, Stream ,
// Stream
decompressedStream.Position = 0;
}
}
}
catch
{
}
}
return decompressedStream;
}
///
/// ZIP
/// ,
///
///
///
///
/// :true/ :false
public static bool CompressMulti(List list, string strZipName, bool IsDirStruct)
{
try
{
using (ZipFile zip = new ZipFile(Encoding.Default))// ,
{
foreach (string path in list)
{
string fileName = Path.GetFileName(path);//
//
if (Directory.Exists(path))
{
if (IsDirStruct)//
{
zip.AddDirectory(path, fileName);
}
else// Zip
{
zip.AddDirectory(path);
}
}
if (File.Exists(path))//
{
zip.AddFile(path);
}
}
zip.Save(strZipName);//
return true;
}
}
catch (Exception)
{
return false;
}
}
///
/// ZIP
///
/// ZIP
///
///
/// :true/ :false
public static bool Decompression(string strZipPath, string strUnZipPath, bool overWrite)
{
try
{
ReadOptions options = new ReadOptions();
options.Encoding = Encoding.Default;// ,
using (ZipFile zip = ZipFile.Read(strZipPath, options))
{
foreach (ZipEntry entry in zip)
{
if (string.IsNullOrEmpty(strUnZipPath))
{
strUnZipPath = strZipPath.Split('.').First();
}
if (overWrite)
{
entry.Extract(strUnZipPath, ExtractExistingFileAction.OverwriteSilently);// ,
}
else
{
entry.Extract(strUnZipPath, ExtractExistingFileAction.DoNotOverwrite);// ,
}
}
return true;
}
}
catch (Exception)
{
return false;
}
}
}
사용 방법:
1. 압축 파일
List list = new List();
list.Add(@"D:\Test\ss");
list.Add(@"D:\Test\test1.jpg");
list.Add(@"D:\ .txt");
list.Add(@"D:\Test\ss.xml");
bool isSuc =ZipUtils. CompressMulti(list, "D:\\Test2.zip",true);
2. 압축 해제 파일
bool isSuc = ZipUtils.Decompression("D:\\Test\\Test1.zip", "D:\\Teest", true);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.