C# Language
.zip 파일 읽기 및 쓰기
수색…
통사론
- 공공 정적 ZipArchive OpenRead (string archiveFileName)
매개 변수
매개 변수 | 세부 |
---|---|
archiveFileName | 열린 아카이브로의 경로이며, 상대 경로 또는 절대 경로로 지정됩니다. 상대 경로는 현재 작업 디렉토리에 상대적인 것으로 해석됩니다. |
zip 파일에 쓰기
새 .zip 파일을 작성하려면 다음을 수행하십시오.
System.IO.Compression
System.IO.Compression.FileSystem
using (FileStream zipToOpen = new FileStream(@"C:\temp", FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
ZipArchiveEntry readmeEntry = archive.CreateEntry("Readme.txt");
using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
{
writer.WriteLine("Information about this package.");
writer.WriteLine("========================");
}
}
}
메모리에 Zip 파일 쓰기
다음 예제는 파일 시스템에 액세스하지 않고 제공된 파일이 들어있는 압축 파일의 byte[]
데이터를 리턴합니다.
public static byte[] ZipFiles(Dictionary<string, byte[]> files)
{
using (MemoryStream ms = new MemoryStream())
{
using (ZipArchive archive = new ZipArchive(ms, ZipArchiveMode.Update))
{
foreach (var file in files)
{
ZipArchiveEntry orderEntry = archive.CreateEntry(file.Key); //create a file with this name
using (BinaryWriter writer = new BinaryWriter(orderEntry.Open()))
{
writer.Write(file.Value); //write the binary data
}
}
}
//ZipArchive must be disposed before the MemoryStream has data
return ms.ToArray();
}
}
Zip 파일에서 파일 가져 오기
이 예제는 제공된 zip 아카이브 바이너리 데이터에서 파일 목록을 가져옵니다.
public static Dictionary<string, byte[]> GetFiles(byte[] zippedFile)
{
using (MemoryStream ms = new MemoryStream(zippedFile))
using (ZipArchive archive = new ZipArchive(ms, ZipArchiveMode.Read))
{
return archive.Entries.ToDictionary(x => x.FullName, x => ReadStream(x.Open()));
}
}
private static byte[] ReadStream(Stream stream)
{
using (var ms = new MemoryStream())
{
stream.CopyTo(ms);
return ms.ToArray();
}
}
다음 예제에서는 zip 아카이브를 열고 모든 .txt 파일을 폴더로 추출하는 방법을 보여줍니다
using System;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string zipPath = @"c:\example\start.zip";
string extractPath = @"c:\example\extract";
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
{
entry.ExtractToFile(Path.Combine(extractPath, entry.FullName));
}
}
}
}
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow