Class Archive

Class Archive

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

Denna klass representerar en zip-arkivfil. Använd den för att komprimera, extrahera eller uppdatera zip-arkiv.

public class Archive : IArchive, IDisposable

Arv

objectArchive

Implementerar

IArchive, IDisposable

Arvade Medlemmar

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

Konstruktörer

Archive(ArchiveEntrySettings)

Initierar en ny instans av Aspose.Zip.Archive-klassen med valfria inställningar för dess poster.

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parametrar

newEntrySettings ArchiveEntrySettings

Komprimerings- och krypteringsinställningar som används för nyinlagda Aspose.Zip.ArchiveEntry-objekt.
Om det inte anges används den vanligaste Deflate-komprimeringen utan kryptering.

Exempel

Följande exempel visar hur man komprimerar en enskild fil med standardinställningar.

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)

Initierar en ny instans av Aspose.Zip.Archive-klassen och komponerar en lista över poster som kan extraheras från arkivet.

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

Parametrar

sourceStream Stream

Källan till arkivet.

loadOptions ArchiveLoadOptions

Alternativ för att ladda befintligt arkiv med.

newEntrySettings ArchiveEntrySettings

Komprimerings- och krypteringsinställningar som används för nyinlagda Aspose.Zip.ArchiveEntry-objekt.
Om det inte anges används den vanligaste Deflate-komprimeringen utan kryptering.

Exempel

Följande exempel extraherar ett krypterat arkiv, och dekomprimerar sedan den första posten till en 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);
    }
}

Anmärkningar

Denna konstruktör dekomprimerar ingen post. Se Aspose.Zip.ArchiveEntry.Open(System.String)-metoden för dekomprimering.

Undantag

ArgumentException

sourceStream är inte sökbar.

InvalidDataException

Krypteringshuvudet för AES strider mot WinZip-komprimeringsmetoden.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Initierar en ny instans av Aspose.Zip.Archive-klassen och komponerar en lista över poster som kan extraheras från arkivet.

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

Parametrar

path string

Den fullständiga eller relativa sökvägen till arkivfilen.

loadOptions ArchiveLoadOptions

Alternativ för att ladda befintligt arkiv med.

newEntrySettings ArchiveEntrySettings

Komprimerings- och krypteringsinställningar som används för nyinlagda Aspose.Zip.ArchiveEntry-objekt.
Om det inte anges används den vanligaste Deflate-komprimeringen utan kryptering.

Exempel

Följande exempel extraherar ett krypterat arkiv, och dekomprimerar sedan den första posten till en 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);
    }
}

Anmärkningar

Denna konstruktör dekomprimerar ingen post. Se Aspose.Zip.ArchiveEntry.Open(System.String)-metoden för dekomprimering.

Undantag

ArgumentNullException

path är null.

SecurityException

Anroparen har inte den nödvändiga behörigheten för att få åtkomst.

ArgumentException

path är tom, innehåller endast vita tecken eller innehåller ogiltiga tecken.

UnauthorizedAccessException

Åtkomst till filen path är nekad.

PathTooLongException

Den angivna path, filnamnet eller båda överskrider den systemdefinierade maximala längden. Till exempel, på Windows-baserade plattformar måste sökvägar vara kortare än 248 tecken, och filnamn måste vara kortare än 260 tecken.

NotSupportedException

Filen vid path innehåller ett kolon (:) i mitten av strängen.

FileNotFoundException

Filen hittades inte.

DirectoryNotFoundException

Den angivna sökvägen är ogiltig, till exempel om den ligger på en icke-mappad enhet.

IOException

Filen är redan öppen.

InvalidDataException

Filen är korrupt.

Archive(string, string[], ArchiveLoadOptions)

Initierar en ny instans av Aspose.Zip.Archive-klassen från ett flervolyms zip-arkiv och komponerar en lista över poster som kan extraheras från arkivet.

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

Parametrar

mainSegment string

Sökväg till den sista segmentet av flervolymarskivet med den centrala katalogen.

Vanligtvis har detta segment *.zip-tillägg och är mindre än de andra.

segmentsInOrder string[]

Sökvägar till varje segment utom det sista av flervolyms zip-arkivet i respektive ordning.

Vanligtvis namnges de filename.z01, filename.z02, ..., filename.z(n-1).

loadOptions ArchiveLoadOptions

Alternativ för att ladda befintligt arkiv med.

Exempel

Detta exempel extraherar ett arkiv med tre segment till en katalog.

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

Undantag

EndOfStreamException

Kan inte ladda ZIP-huvuden eftersom de angivna filerna är korrupta.

Egenskaper

Entries

Får poster av typen Aspose.Zip.ArchiveEntry som utgör arkivet.

public ReadOnlyCollection<archiveentry> Entries { get; }

Egenskapsvärde

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

Komprimerings- och krypteringsinställningar som används för nyinlagda Aspose.Zip.ArchiveEntry-objekt.

public ArchiveEntrySettings NewEntrySettings { get; }

Egenskapsvärde

ArchiveEntrySettings

Metoder

CreateEntries(DirectoryInfo, bool)

Lägger till alla filer och kataloger rekursivt i det angivna katalogen till arkivet.

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

Parametrar

directory DirectoryInfo

Katalog att komprimera.

includeRootDirectory bool

Anger om rotkatalogen själv ska inkluderas eller inte.

Returer

Archive

Arkivet med sammansatta poster.

Exempel

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

Undantag

DirectoryNotFoundException

Sökvägen till directory är ogiltig, till exempel om den ligger på en icke-mappad enhet.

SecurityException

Anroparen har inte den nödvändiga behörigheten för att få åtkomst till directory.

CreateEntries(string, bool)

Lägger till alla filer och kataloger rekursivt i det angivna katalogen till arkivet.

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

Parametrar

sourceDirectory string

Katalog att komprimera.

includeRootDirectory bool

Anger om rotkatalogen själv ska inkluderas eller inte.

Returer

Archive

Arkivet med sammansatta poster.

Exempel

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

CreateEntry(string, string, bool, ArchiveEntrySettings)

Skapa en enskild post inom arkivet.

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

Parametrar

name string

Namnet på posten.

path string

Det fullständiga namnet på den nya filen, eller det relativa filnamnet som ska komprimeras.

openImmediately bool

Sant om filen ska öppnas omedelbart, annars öppnas filen vid arkivbesparing.

newEntrySettings ArchiveEntrySettings

Komprimerings- och krypteringsinställningar som används för den tillagda Aspose.Zip.ArchiveEntry-posten.

Returer

ArchiveEntry

Zip-poster instans.

Exempel

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

Anmärkningar

Postnamnet ställs enbart in inom name-parametern. Filnamnet som anges i path-parametern påverkar inte postnamnet.

Om filen öppnas omedelbart med openImmediately-parametern blockeras den tills arkivet sparas.

Undantag

ArgumentNullException

path är null.

SecurityException

Anroparen har inte den nödvändiga behörigheten för att få åtkomst.

ArgumentException

path är tom, innehåller endast vita tecken eller innehåller ogiltiga tecken.

UnauthorizedAccessException

Åtkomst till filen path är nekad.

PathTooLongException

Den angivna path, filnamn, eller båda överskrider den systemdefinierade maximala längden. Till exempel, på Windows-baserade plattformar, måste sökvägar vara kortare än 248 tecken, och filnamn måste vara kortare än 260 tecken.

NotSupportedException

Filen vid path innehåller ett kolon (:) i mitten av strängen.

CreateEntry(string, Stream, ArchiveEntrySettings)

Skapa en enskild post inom arkivet.

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

Parametrar

name string

Namnet på posten.

source Stream

Indataströmmen för posten.

newEntrySettings ArchiveEntrySettings

Komprimerings- och krypteringsinställningar som används för den tillagda Aspose.Zip.ArchiveEntry-posten.

Returer

ArchiveEntry

Zip-poster instans.

Exempel

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)

Skapa en enskild post inom arkivet.

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

Parametrar

name string

Namnet på posten.

fileInfo FileInfo

Metadata för filen som ska komprimeras.

openImmediately bool

Sant om filen ska öppnas omedelbart, annars öppnas filen vid arkivbesparing.

newEntrySettings ArchiveEntrySettings

Komprimerings- och krypteringsinställningar som används för den tillagda Aspose.Zip.ArchiveEntry-posten.

Returer

ArchiveEntry

Zip-poster instans.

Exempel

Komponera arkiv med poster krypterade med olika krypteringsmetoder och lösenord.

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);
    }
}

Anmärkningar

Postnamnet ställs enbart in inom name-parametern. Filnamnet som anges i fileInfo-parametern påverkar inte postnamnet.

Om filen öppnas omedelbart med openImmediately-parametern blockeras den tills arkivet sparas.

Undantag

UnauthorizedAccessException

fileInfo är skrivskyddad eller är en katalog.

DirectoryNotFoundException

Den angivna sökvägen är ogiltig, till exempel om den ligger på en icke-mappad enhet.

IOException

Filen är redan öppen.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

Skapa en enskild post inom arkivet.

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

Parametrar

name string

Namnet på posten.

source Stream

Indataströmmen för posten.

newEntrySettings ArchiveEntrySettings

Komprimerings- och krypteringsinställningar som används för den tillagda Aspose.Zip.ArchiveEntry-posten.

fileInfo FileSystemInfo

Metadata för filen eller mappen som ska komprimeras.

Returer

ArchiveEntry

Zip-poster instans.

Exempel

Komponera arkiv med krypterad post.

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);
    }
}

Anmärkningar

Postnamnet ställs enbart in inom name-parametern. Filnamnet som anges i fileInfo-parametern påverkar inte postnamnet.

fileInfo kan referera till System.IO.DirectoryInfo om posten är en katalog.

Undantag

InvalidOperationException

Både source och fileInfo är null eller source är null och fileInfo står för en katalog.

CreateEntry(string, Func<stream>, ArchiveEntrySettings)

Skapa en enskild post inom arkivet.

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

Parametrar

name string

Namnet på posten.

streamProvider Func<Stream&gt;

Metoden som tillhandahåller indataströmmen för posten.

newEntrySettings ArchiveEntrySettings

Komprimerings- och krypteringsinställningar som används för den tillagda Aspose.Zip.ArchiveEntry-posten.

Returer

ArchiveEntry

Zip-poster instans.

Exempel

Komponera arkiv med krypterad post.

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);
    }
}

Anmärkningar

Denna metod är för .NET Framework 4.0 och senare och för .NET Standard 2.0-versionen.

DeleteEntry(ArchiveEntry)

Tar bort den första förekomsten av en specifik post från listan över poster.

public Archive DeleteEntry(ArchiveEntry entry)

Parametrar

entry ArchiveEntry

Den post som ska tas bort från listan över poster.

Returer

Archive

Arkivet med den borttagna posten.

Exempel

Här är hur du kan ta bort alla poster utom den sista:

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

Undantag

ObjectDisposedException

Arkivet har avstängts.

DeleteEntry(int)

Tar bort posten från listan över poster efter index.

public Archive DeleteEntry(int entryIndex)

Parametrar

entryIndex int

Det nollbaserade indexet för den post som ska tas bort.

Returer

Archive

Arkivet med den borttagna posten.

Exempel

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

Undantag

ObjectDisposedException

Arkivet har avstängts.

ArgumentOutOfRangeException

entryIndex är mindre än 0.-eller- entryIndex är lika med eller större än Entries-antalet.

Dispose()

Utför applikationsdefinierade uppgifter kopplade till att frigöra, släppa eller återställa obehöriga resurser.

public void Dispose()

Dispose(bool)

Utför applikationsdefinierade uppgifter kopplade till att frigöra, släppa eller återställa obehöriga resurser.

protected virtual void Dispose(bool disposing)

Parametrar

disposing bool

Anger om hanterade resurser ska avstängas.

ExtractToDirectory(string)

Extraherar alla filer i arkivet till den angivna katalogen.

public void ExtractToDirectory(string destinationDirectory)

Parametrar

destinationDirectory string

Sökvägen till katalogen där de extraherade filerna ska placeras.

Exempel

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

Anmärkningar

Om katalogen inte finns, kommer den att skapas.

Undantag

ArgumentNullException

destinationDirectory är null.

PathTooLongException

Den angivna sökvägen, filnamnet, eller båda överskrider den systemdefinierade maximala längden. Till exempel, på Windows-baserade plattformar måste sökvägar vara kortare än 248 tecken och filnamn måste vara kortare än 260 tecken.

SecurityException

Anroparen har inte den nödvändiga behörigheten för att få åtkomst till den befintliga katalogen.

NotSupportedException

Om katalogen inte finns, innehåller sökvägen ett kolontecken (:) som inte är en del av en enhetsbeteckning (“C:").

ArgumentException

destinationDirectory är en noll-längds sträng, innehåller endast vita tecken eller innehåller ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken genom att använda System.IO.Path.GetInvalidPathChars-metoden. -eller- sökvägen är förlängd med, eller innehåller, endast ett kolontecken (:).

IOException

Den angivna sökvägen är en fil. -eller- Det nätverksnamnet är inte känt.

InvalidDataException

Felaktigt lösenord har angetts. - eller - Arkivet är korrupt.

Save(Stream, ArchiveSaveOptions)

Sparar arkivet till den angivna strömmen.

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

Parametrar

outputStream Stream

Destinationström.

saveOptions ArchiveSaveOptions

Alternativ för arkivbesparing.

Exempel

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

Anmärkningar

outputStream måste vara skrivbar.

Undantag

ArgumentException

outputStream är inte skrivbar.

ObjectDisposedException

Arkivet har avstängts.

Save(string, ArchiveSaveOptions)

Sparar arkivet till den angivna destinationsfilen.

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

Parametrar

destinationFileName string

Sökvägen till arkivet som ska skapas. Om det angivna filnamnet pekar på en befintlig fil, kommer den att skrivas över.

saveOptions ArchiveSaveOptions

Alternativ för arkivbesparing.

Exempel

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

Anmärkningar

Det är möjligt att spara ett arkiv till samma sökväg som det laddades från. Men detta rekommenderas inte eftersom detta tillvägagångssätt använder kopiering till en temporär fil.

Undantag

ArgumentNullException

destinationFileName är null.

SecurityException

Anroparen har inte den nödvändiga behörigheten för att få åtkomst.

ArgumentException

destinationFileName är tom, innehåller endast vita tecken eller innehåller ogiltiga tecken.

UnauthorizedAccessException

Åtkomst till filen destinationFileName är nekad.

PathTooLongException

Den angivna destinationFileName, filnamnet eller båda överskrider den systemdefinierade maximala längden.
Till exempel, på Windows-baserade plattformar måste sökvägar vara kortare än 248 tecken, och filnamn måste vara kortare än 260 tecken.

NotSupportedException

Filen vid destinationFileName innehåller ett kolon (:) i mitten av strängen.

FileNotFoundException

Filen hittades inte.

DirectoryNotFoundException

Den angivna sökvägen är ogiltig, till exempel om den ligger på en icke-mappad enhet.

IOException

Filen är redan öppen.

SaveSplit(string, SplitArchiveSaveOptions)

Sparar fler volymsarkiv till den angivna destinationskatalogen.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parametrar

destinationDirectory string

Sökvägen till katalogen där arkivsegment ska skapas.

options SplitArchiveSaveOptions

Alternativ för arkivbesparing, inklusive filnamn.

Exempel

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

Anmärkningar

Denna metod komponerar flera (n) filer filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.

Kan inte göra ett befintligt arkiv till fler volymer.

Undantag

InvalidOperationException

Detta arkiv öppnades från en befintlig källa.

NotSupportedException

Detta arkiv är både komprimerat med XZ-metoden och krypterat.

ArgumentNullException

destinationDirectory är null.

SecurityException

Anroparen har inte den nödvändiga behörigheten för att få åtkomst till katalogen.

ArgumentException

destinationDirectory innehåller ogiltiga tecken som “, >, < eller |.

PathTooLongException

Den angivna sökvägen överskrider den systemdefinierade maximala längden.

ObjectDisposedException

Arkivet har avstängts.

 Svenska