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
Implementerar
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
sourceStream
är inte sökbar.
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
path
är null.
Anroparen har inte den nödvändiga behörigheten för att få åtkomst.
path
är tom, innehåller endast vita tecken eller innehåller ogiltiga tecken.
Åtkomst till filen path
är nekad.
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.
Filen vid path
innehåller ett kolon (:) i mitten av strängen.
Filen hittades inte.
Den angivna sökvägen är ogiltig, till exempel om den ligger på en icke-mappad enhet.
Filen är redan öppen.
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
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>
NewEntrySettings
Komprimerings- och krypteringsinställningar som används för nyinlagda Aspose.Zip.ArchiveEntry-objekt.
public ArchiveEntrySettings NewEntrySettings { get; }
Egenskapsvärde
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
Arkivet med sammansatta poster.
Exempel
using (Archive archive = new Archive())
{
DirectoryInfo folder = new DirectoryInfo("C:\folder");
archive.CreateEntries(folder);
archive.Save("folder.zip");
}
Undantag
Sökvägen till directory
är ogiltig, till exempel om den ligger på en icke-mappad enhet.
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
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
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
path
är null.
Anroparen har inte den nödvändiga behörigheten för att få åtkomst.
path
är tom, innehåller endast vita tecken eller innehåller ogiltiga tecken.
Åtkomst till filen path
är nekad.
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.
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
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
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
fileInfo
är skrivskyddad eller är en katalog.
Den angivna sökvägen är ogiltig, till exempel om den ligger på en icke-mappad enhet.
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
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
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>
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
Zip-poster instans.
Exempel
Komponera arkiv med krypterad post.
System.Func<Stream> 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
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 > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Undantag
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
Arkivet med den borttagna posten.
Exempel
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Undantag
Arkivet har avstängts.
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
destinationDirectory
är null.
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.
Anroparen har inte den nödvändiga behörigheten för att få åtkomst till den befintliga katalogen.
Om katalogen inte finns, innehåller sökvägen ett kolontecken (:) som inte är en del av en enhetsbeteckning (“C:").
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 (:).
Den angivna sökvägen är en fil. -eller- Det nätverksnamnet är inte känt.
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
outputStream
är inte skrivbar.
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
destinationFileName
är null.
Anroparen har inte den nödvändiga behörigheten för att få åtkomst.
destinationFileName
är tom, innehåller endast vita tecken eller innehåller ogiltiga tecken.
Åtkomst till filen destinationFileName
är nekad.
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.
Filen vid destinationFileName
innehåller ett kolon (:) i mitten av strängen.
Filen hittades inte.
Den angivna sökvägen är ogiltig, till exempel om den ligger på en icke-mappad enhet.
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
Detta arkiv öppnades från en befintlig källa.
Detta arkiv är både komprimerat med XZ-metoden och krypterat.
destinationDirectory
är null.
Anroparen har inte den nödvändiga behörigheten för att få åtkomst till katalogen.
destinationDirectory
innehåller ogiltiga tecken som “, >, < eller |.
Den angivna sökvägen överskrider den systemdefinierade maximala längden.
Arkivet har avstängts.