Class Archive

Class Archive

Namespace: Aspose.Zip
Assembly: Aspose.Zip.dll (25.1.0)

이 클래스는 zip 아카이브 파일을 나타냅니다. zip 아카이브를 구성, 추출 또는 업데이트하는 데 사용합니다.

public class Archive : IArchive, IDisposable

상속

objectArchive

구현

IArchive, IDisposable

상속된 멤버

object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

생성자

Archive(ArchiveEntrySettings)

Aspose.Zip.Archive 클래스의 새 인스턴스를 초기화하며 항목에 대한 선택적 설정을 포함합니다.

public Archive(ArchiveEntrySettings newEntrySettings = null)

매개변수

newEntrySettings ArchiveEntrySettings

새로 추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다. 지정하지 않으면 암호화 없는 가장 일반적인 Deflate 압축이 사용됩니다.

예제

다음 예제는 기본 설정으로 단일 파일을 압축하는 방법을 보여줍니다.

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

Archive(Stream, ArchiveLoadOptions, ArchiveEntrySettings)

Aspose.Zip.Archive 클래스의 새 인스턴스를 초기화하며 아카이브에서 추출할 수 있는 항목 목록을 구성합니다.

public Archive(Stream sourceStream, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)

매개변수

sourceStream Stream

아카이브의 소스입니다.

loadOptions ArchiveLoadOptions

기존 아카이브를 로드하는 옵션입니다.

newEntrySettings ArchiveEntrySettings

새로 추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다. 지정하지 않으면 암호화 없는 가장 일반적인 Deflate 압축이 사용됩니다.

예제

다음 예제는 암호화된 아카이브를 추출한 후 첫 번째 항목을 MemoryStream으로 압축 해제하는 방법을 보여줍니다.

var fs = File.OpenRead("encrypted.zip");
var extracted = new MemoryStream();
using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
    using (var decompressed = archive.Entries[0].Open())
    {
        byte[] b = new byte[8192];
        int bytesRead;
        while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
            extracted.Write(b, 0, bytesRead);
    }
}

비고

이 생성자는 어떤 항목도 압축 해제하지 않습니다. 압축 해제를 위해서는 Aspose.Zip.ArchiveEntry.Open(System.String) 메서드를 참조하십시오.

예외

ArgumentException

sourceStream는 탐색할 수 없습니다.

InvalidDataException

AES에 대한 암호화 헤더가 WinZip 압축 방법과 모순됩니다.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Aspose.Zip.Archive 클래스의 새 인스턴스를 초기화하며 아카이브에서 추출할 수 있는 항목 목록을 구성합니다.

public Archive(string path, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)

매개변수

path string

아카이브 파일에 대한 완전한 경로 또는 상대 경로입니다.

loadOptions ArchiveLoadOptions

기존 아카이브를 로드하는 옵션입니다.

newEntrySettings ArchiveEntrySettings

새로 추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다. 지정하지 않으면 암호화 없는 가장 일반적인 Deflate 압축이 사용됩니다.

예제

다음 예제는 암호화된 아카이브를 추출한 후 첫 번째 항목을 MemoryStream으로 압축 해제하는 방법을 보여줍니다.

var extracted = new MemoryStream();
using (Archive archive = new Archive("encrypted.zip", new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
    using (var decompressed = archive.Entries[0].Open())
    {
        byte[] b = new byte[8192];
        int bytesRead;
        while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
            extracted.Write(b, 0, bytesRead);
    }
}

비고

이 생성자는 어떤 항목도 압축 해제하지 않습니다. 압축 해제를 위해서는 Aspose.Zip.ArchiveEntry.Open(System.String) 메서드를 참조하십시오.

예외

ArgumentNullException

path는 null입니다.

SecurityException

호출자는 액세스에 필요한 권한이 없습니다.

ArgumentException

path가 비어 있거나 공백만 포함하거나 잘못된 문자가 포함되어 있습니다.

UnauthorizedAccessException

path 파일에 대한 액세스가 거부되었습니다.

PathTooLongException

지정된 path, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다. 예를 들어, Windows 기반 플랫폼에서는 경로가 248자 미만이어야 하며, 파일 이름은 260자 미만이어야 합니다.

NotSupportedException

path에 문자열 중간에 콜론(:)이 포함되어 있습니다.

FileNotFoundException

파일을 찾을 수 없습니다.

DirectoryNotFoundException

지정된 경로가 유효하지 않습니다. 예를 들어, 매핑되지 않은 드라이브에 있을 수 있습니다.

IOException

파일이 이미 열려 있습니다.

InvalidDataException

파일이 손상되었습니다.

Archive(string, string[], ArchiveLoadOptions)

다중 볼륨 zip 아카이브에서 Aspose.Zip.Archive 클래스의 새 인스턴스를 초기화하며 아카이브에서 추출할 수 있는 항목 목록을 구성합니다.

public Archive(string mainSegment, string[] segmentsInOrder, ArchiveLoadOptions loadOptions = null)

매개변수

mainSegment string

중앙 디렉터리가 있는 다중 볼륨 아카이브의 마지막 세그먼트에 대한 경로입니다.

일반적으로 이 세그먼트는 *.zip 확장자를 가지며 다른 세그먼트보다 작습니다.

segmentsInOrder string[]

순서를 존중하며 다중 볼륨 zip 아카이브의 마지막 세그먼트를 제외한 각 세그먼트에 대한 경로입니다.

일반적으로 filename.z01, filename.z02, ..., filename.z(n-1)로 명명됩니다.

loadOptions ArchiveLoadOptions

기존 아카이브를 로드하는 옵션입니다.

예제

이 샘플은 세 개의 세그먼트로 이루어진 아카이브를 디렉터리로 추출합니다.

using (Archive a = new Archive("archive.zip", new string[] { "archive.z01", "archive.z02" }))
{
    a.ExtractToDirectory("destination");
}

예외

EndOfStreamException

제공된 파일이 손상되어 ZIP 헤더를 로드할 수 없습니다.

속성

Entries

아카이브를 구성하는 Aspose.Zip.ArchiveEntry 유형의 항목을 가져옵니다.

public ReadOnlyCollection<archiveentry> Entries { get; }

속성 값

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

새로 추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다.

public ArchiveEntrySettings NewEntrySettings { get; }

속성 값

ArchiveEntrySettings

메서드

CreateEntries(DirectoryInfo, bool)

주어진 디렉터리에서 모든 파일과 디렉터리를 재귀적으로 아카이브에 추가합니다.

public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)

매개변수

directory DirectoryInfo

압축할 디렉터리입니다.

includeRootDirectory bool

루트 디렉터리 자체를 포함할지 여부를 나타냅니다.

반환

Archive

구성된 항목이 포함된 아카이브입니다.

예제

using (Archive archive = new Archive())
{
    DirectoryInfo folder = new DirectoryInfo("C:\folder");
    archive.CreateEntries(folder);
    archive.Save("folder.zip");
}

예외

DirectoryNotFoundException

directory에 대한 경로가 유효하지 않습니다. 예를 들어, 매핑되지 않은 드라이브에 있을 수 있습니다.

SecurityException

호출자는 directory에 액세스하는 데 필요한 권한이 없습니다.

CreateEntries(string, bool)

주어진 디렉터리에서 모든 파일과 디렉터리를 재귀적으로 아카이브에 추가합니다.

public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)

매개변수

sourceDirectory string

압축할 디렉터리입니다.

includeRootDirectory bool

루트 디렉터리 자체를 포함할지 여부를 나타냅니다.

반환

Archive

구성된 항목이 포함된 아카이브입니다.

예제

using (Archive archive = new Archive())
{
    archive.CreateEntries("C:\folder");
    archive.Save("folder.zip");
}

CreateEntry(string, string, bool, ArchiveEntrySettings)

아카이브 내에 단일 항목을 생성합니다.

public ArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)

매개변수

name string

항목의 이름입니다.

path string

새 파일의 완전한 이름 또는 압축할 상대 파일 이름입니다.

openImmediately bool

파일을 즉시 열면 true, 그렇지 않으면 아카이브 저장 시 파일을 엽니다.

newEntrySettings ArchiveEntrySettings

추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다.

반환

ArchiveEntry

Zip 항목 인스턴스입니다.

예제

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

비고

항목 이름은 name 매개변수 내에서만 설정됩니다. path 매개변수에 제공된 파일 이름은 항목 이름에 영향을 미치지 않습니다.

파일이 openImmediately 매개변수로 즉시 열리면 아카이브가 저장될 때까지 차단됩니다.

예외

ArgumentNullException

path는 null입니다.

SecurityException

호출자는 액세스에 필요한 권한이 없습니다.

ArgumentException

path가 비어 있거나 공백만 포함하거나 잘못된 문자가 포함되어 있습니다.

UnauthorizedAccessException

path 파일에 대한 액세스가 거부되었습니다.

PathTooLongException

지정된 path, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다. 예를 들어, Windows 기반 플랫폼에서는 경로가 248자 미만이어야 하며, 파일 이름은 260자 미만이어야 합니다.

NotSupportedException

path에 문자열 중간에 콜론(:)이 포함되어 있습니다.

CreateEntry(string, Stream, ArchiveEntrySettings)

아카이브 내에 단일 항목을 생성합니다.

public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)

매개변수

name string

항목의 이름입니다.

source Stream

항목의 입력 스트림입니다.

newEntrySettings ArchiveEntrySettings

추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다.

반환

ArchiveEntry

Zip 항목 인스턴스입니다.

예제

using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
    archive.CreateEntry("data.bin", new MemoryStream(new byte[] {0x00, 0xFF} ));
    archive.Save("archive.zip");
}

CreateEntry(string, FileInfo, bool, ArchiveEntrySettings)

아카이브 내에 단일 항목을 생성합니다.

public ArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)

매개변수

name string

항목의 이름입니다.

fileInfo FileInfo

압축할 파일의 메타데이터입니다.

openImmediately bool

파일을 즉시 열면 true, 그렇지 않으면 아카이브 저장 시 파일을 엽니다.

newEntrySettings ArchiveEntrySettings

추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다.

반환

ArchiveEntry

Zip 항목 인스턴스입니다.

예제

각기 다른 암호화 방법과 비밀번호로 암호화된 항목으로 아카이브를 구성합니다.

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    FileInfo fi1 = new FileInfo("data1.bin");
    FileInfo fi2 = new FileInfo("data2.bin");
    FileInfo fi3 = new FileInfo("data3.bin");
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", fi1, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")));
        archive.CreateEntry("entry2.bin", fi2, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEcryptionSettings("pass2", EncryptionMethod.AES128)));
        archive.CreateEntry("entry3.bin", fi3, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEcryptionSettings("pass3", EncryptionMethod.AES256)));
        archive.Save(zipFile);
    }
}

비고

항목 이름은 name 매개변수 내에서만 설정됩니다. fileInfo 매개변수에 제공된 파일 이름은 항목 이름에 영향을 미치지 않습니다.

파일이 openImmediately 매개변수로 즉시 열리면 아카이브가 저장될 때까지 차단됩니다.

예외

UnauthorizedAccessException

fileInfo가 읽기 전용이거나 디렉터리입니다.

DirectoryNotFoundException

지정된 경로가 유효하지 않습니다. 예를 들어, 매핑되지 않은 드라이브에 있을 수 있습니다.

IOException

파일이 이미 열려 있습니다.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

아카이브 내에 단일 항목을 생성합니다.

public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings, FileSystemInfo fileInfo)

매개변수

name string

항목의 이름입니다.

source Stream

항목의 입력 스트림입니다.

newEntrySettings ArchiveEntrySettings

추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다.

fileInfo FileSystemInfo

압축할 파일 또는 폴더의 메타데이터입니다.

반환

ArchiveEntry

Zip 항목 인스턴스입니다.

예제

암호화된 항목으로 아카이브를 구성합니다.

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", new MemoryStream(new byte[] {0x00, 0xFF} ), new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")), new FileInfo("data1.bin")); 
        archive.Save(zipFile);
    }
}

비고

항목 이름은 name 매개변수 내에서만 설정됩니다. fileInfo 매개변수에 제공된 파일 이름은 항목 이름에 영향을 미치지 않습니다.

fileInfo는 항목이 디렉터리인 경우 System.IO.DirectoryInfo를 참조할 수 있습니다.

예외

InvalidOperationException

sourcefileInfo가 모두 null이거나 source가 null이고 fileInfo가 디렉터리를 나타냅니다.

CreateEntry(string, Func<stream>, ArchiveEntrySettings)

아카이브 내에 단일 항목을 생성합니다.

public ArchiveEntry CreateEntry(string name, Func<stream> streamProvider, ArchiveEntrySettings newEntrySettings = null)

매개변수

name string

항목의 이름입니다.

streamProvider Func<Stream&gt;

항목의 입력 스트림을 제공하는 메서드입니다.

newEntrySettings ArchiveEntrySettings

추가된 Aspose.Zip.ArchiveEntry 항목에 사용되는 압축 및 암호화 설정입니다.

반환

ArchiveEntry

Zip 항목 인스턴스입니다.

예제

암호화된 항목으로 아카이브를 구성합니다.

System.Func&lt;Stream&gt; provider = delegate(){ return new MemoryStream(new byte[]{0xFF, 0x00}); };
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", provider, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")))); 
        archive.Save(zipFile);
    }
}

비고

이 메서드는 .NET Framework 4.0 이상 및 .NET Standard 2.0 버전에 해당합니다.

DeleteEntry(ArchiveEntry)

특정 항목의 첫 번째 발생을 항목 목록에서 제거합니다.

public Archive DeleteEntry(ArchiveEntry entry)

매개변수

entry ArchiveEntry

항목 목록에서 제거할 항목입니다.

반환

Archive

항목이 삭제된 아카이브입니다.

예제

마지막 항목을 제외한 모든 항목을 제거하는 방법은 다음과 같습니다:

using (var archive = new Archive("archive.zip"))
{
    while (archive.Entries.Count &gt; 1)
        archive.DeleteEntry(archive.Entries[0]);
    archive.Save("last_entry.zip");
}

예외

ObjectDisposedException

아카이브가 폐기되었습니다.

DeleteEntry(int)

인덱스로 항목을 항목 목록에서 제거합니다.

public Archive DeleteEntry(int entryIndex)

매개변수

entryIndex int

제거할 항목의 0 기반 인덱스입니다.

반환

Archive

항목이 삭제된 아카이브입니다.

예제

using (var archive = new TarArchive("two_files.zip"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.zip");
}

예외

ObjectDisposedException

아카이브가 폐기되었습니다.

ArgumentOutOfRangeException

entryIndex가 0보다 작습니다. 또는 entryIndexEntries 수 이상입니다.

Dispose()

비관리 리소스를 해제, 릴리스 또는 재설정하는 애플리케이션 정의 작업을 수행합니다.

public void Dispose()

Dispose(bool)

비관리 리소스를 해제, 릴리스 또는 재설정하는 애플리케이션 정의 작업을 수행합니다.

protected virtual void Dispose(bool disposing)

매개변수

disposing bool

관리 리소스를 해제해야 하는지 여부입니다.

ExtractToDirectory(string)

아카이브의 모든 파일을 제공된 디렉터리로 추출합니다.

public void ExtractToDirectory(string destinationDirectory)

매개변수

destinationDirectory string

추출된 파일을 배치할 디렉터리의 경로입니다.

예제

using (var archive = new Archive("archive.zip")) 
{ 
   archive.ExtractToDirectory("C:\extracted");
}

비고

디렉터리가 존재하지 않으면 생성됩니다.

예외

ArgumentNullException

destinationDirectory는 null입니다.

PathTooLongException

지정된 경로, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다. 예를 들어, Windows 기반 플랫폼에서는 경로가 248자 미만이어야 하며, 파일 이름은 260자 미만이어야 합니다.

SecurityException

호출자는 기존 디렉터리에 액세스하는 데 필요한 권한이 없습니다.

NotSupportedException

디렉터리가 존재하지 않으면 경로에 드라이브 레이블(“C:")의 일부가 아닌 콜론(:) 문자가 포함되어 있습니다.

ArgumentException

destinationDirectory가 길이가 0인 문자열이거나 공백만 포함하거나 하나 이상의 잘못된 문자가 포함되어 있습니다. 잘못된 문자는 System.IO.Path.GetInvalidPathChars 메서드를 사용하여 쿼리할 수 있습니다.
- 또는 - 경로가 접두사로 붙거나 콜론(:) 문자만 포함합니다.

IOException

지정된 경로의 디렉터리가 파일입니다. - 또는 - 네트워크 이름을 알 수 없습니다.

InvalidDataException

잘못된 비밀번호가 제공되었습니다. - 또는 - 아카이브가 손상되었습니다.

Save(Stream, ArchiveSaveOptions)

제공된 스트림에 아카이브를 저장합니다.

public void Save(Stream outputStream, ArchiveSaveOptions saveOptions = null)

매개변수

outputStream Stream

대상 스트림입니다.

saveOptions ArchiveSaveOptions

아카이브 저장 옵션입니다.

예제

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry.bin", "data.bin");
        archive.Save(zipFile);
    }
}

비고

outputStream는 쓰기 가능해야 합니다.

예외

ArgumentException

outputStream는 쓰기 가능하지 않습니다.

ObjectDisposedException

아카이브가 폐기되었습니다.

Save(string, ArchiveSaveOptions)

제공된 대상 파일에 아카이브를 저장합니다.

public void Save(string destinationFileName, ArchiveSaveOptions saveOptions = null)

매개변수

destinationFileName string

생성될 아카이브의 경로입니다. 지정된 파일 이름이 기존 파일을 가리키면 덮어씁니다.

saveOptions ArchiveSaveOptions

아카이브 저장 옵션입니다.

예제

using (var archive = new Archive())
{
    archive.CreateEntry("entry.bin", "data.bin");
    archive.Save("archive.zip",  new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}

비고

아카이브를 로드한 동일한 경로에 아카이브를 저장하는 것이 가능합니다. 그러나 이 방법은 임시 파일로 복사하는 방식을 사용하므로 권장되지 않습니다.

예외

ArgumentNullException

destinationFileName는 null입니다.

SecurityException

호출자는 액세스에 필요한 권한이 없습니다.

ArgumentException

destinationFileName가 비어 있거나 공백만 포함하거나 잘못된 문자가 포함되어 있습니다.

UnauthorizedAccessException

destinationFileName 파일에 대한 액세스가 거부되었습니다.

PathTooLongException

지정된 destinationFileName, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다.
예를 들어, Windows 기반 플랫폼에서는 경로가 248자 미만이어야 하며, 파일 이름은 260자 미만이어야 합니다.

NotSupportedException

destinationFileName에 문자열 중간에 콜론(:)이 포함되어 있습니다.

FileNotFoundException

파일을 찾을 수 없습니다.

DirectoryNotFoundException

지정된 경로가 유효하지 않습니다. 예를 들어, 매핑되지 않은 드라이브에 있을 수 있습니다.

IOException

파일이 이미 열려 있습니다.

SaveSplit(string, SplitArchiveSaveOptions)

제공된 대상 디렉터리에 다중 볼륨 아카이브를 저장합니다.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

매개변수

destinationDirectory string

아카이브 세그먼트를 생성할 디렉터리에 대한 경로입니다.

options SplitArchiveSaveOptions

파일 이름을 포함한 아카이브 저장 옵션입니다.

예제

using (Archive archive = new Archive())
{
    archive.CreateEntry("entry.bin", "data.bin");
    archive.SaveSplit(@"C:\Folder",  new SplitArchiveSaveOptions("volume", 65536));
}

비고

이 메서드는 여러 개의 파일 filename.z01, filename.z02, ..., filename.z(n-1), filename.zip을 구성합니다.

기존 아카이브를 다중 볼륨으로 만들 수 없습니다.

예외

InvalidOperationException

이 아카이브는 기존 소스에서 열렸습니다.

NotSupportedException

이 아카이브는 XZ 방법으로 압축되었으며 암호화되었습니다.

ArgumentNullException

destinationDirectory는 null입니다.

SecurityException

호출자는 디렉터리에 액세스하는 데 필요한 권한이 없습니다.

ArgumentException

destinationDirectory에 “, >, < 또는 |와 같은 잘못된 문자가 포함되어 있습니다.

PathTooLongException

지정된 경로가 시스템 정의 최대 길이를 초과합니다.

ObjectDisposedException

아카이브가 폐기되었습니다.

 한국어