Class Archive
Namespace: Aspose.Zip
Assembly: Aspose.Zip.dll (25.1.0)
این کلاس نمایانگر فایل آرشیو zip است. از آن برای ترکیب، استخراج یا بهروزرسانی آرشیوهای zip استفاده کنید.
public class Archive : 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) برای فشردهسازی مراجعه کنید.
استثناها
sourceStream
قابل جستجو نیست.
هدر رمزگذاری برای 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) برای فشردهسازی مراجعه کنید.
استثناها
path
null است.
فراخوانیکننده مجوز لازم برای دسترسی را ندارد.
path
خالی است، تنها شامل فاصلههای سفید است، یا شامل کاراکترهای نامعتبر است.
دسترسی به فایل path
رد شده است.
path
، نام فایل، یا هر دو از طول حداکثر تعیینشده توسط سیستم فراتر رفتهاند. به عنوان مثال، در پلتفرمهای مبتنی بر ویندوز، مسیرها باید کمتر از 248 کاراکتر و نام فایلها باید کمتر از 260 کاراکتر باشند.
فایل در path
شامل یک کولن (:) در وسط رشته است.
فایل پیدا نشد.
مسیر مشخص شده نامعتبر است، مانند اینکه در یک درایو نامشخص باشد.
فایل در حال حاضر باز است.
فایل خراب شده است.
Archive(string, string[], ArchiveLoadOptions)
یک نمونه جدید از کلاس Aspose.Zip.Archive را از آرشیو zip چندحجمی مقداردهی اولیه میکند و لیست ورودیهایی که میتوانند از آرشیو استخراج شوند را تشکیل میدهد.
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");
}
استثناها
نمیتوان هدرهای ZIP را بارگذاری کرد زیرا فایلهای ارائه شده خراب شدهاند.
ویژگیها
Entries
ورودیهای نوع Aspose.Zip.ArchiveEntry را که آرشیو را تشکیل میدهند، دریافت میکند.
public ReadOnlyCollection<archiveentry> Entries { get; }
مقدار ویژگی
ReadOnlyCollection<ArchiveEntry>
NewEntrySettings
تنظیمات فشردهسازی و رمزگذاری استفاده شده برای موارد Aspose.Zip.ArchiveEntry که به تازگی اضافه شدهاند.
public ArchiveEntrySettings NewEntrySettings { get; }
مقدار ویژگی
متدها
CreateEntries(DirectoryInfo, bool)
تمام فایلها و دایرکتوریها را به طور بازگشتی به آرشیو اضافه میکند.
public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)
پارامترها
directory
DirectoryInfo
دایرکتوری برای فشردهسازی.
includeRootDirectory
bool
نشان میدهد که آیا دایرکتوری ریشه خود را شامل شود یا خیر.
بازگشت
آرشیو با ورودیهای تشکیل شده.
مثالها
using (Archive archive = new Archive())
{
DirectoryInfo folder = new DirectoryInfo("C:\folder");
archive.CreateEntries(folder);
archive.Save("folder.zip");
}
استثناها
مسیر به directory
نامعتبر است، مانند اینکه در یک درایو نامشخص باشد.
فراخوانیکننده مجوز لازم برای دسترسی به directory
را ندارد.
CreateEntries(string, bool)
تمام فایلها و دایرکتوریها را به طور بازگشتی به آرشیو اضافه میکند.
public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)
پارامترها
sourceDirectory
string
دایرکتوری برای فشردهسازی.
includeRootDirectory
bool
نشان میدهد که آیا دایرکتوری ریشه خود را شامل شود یا خیر.
بازگشت
آرشیو با ورودیهای تشکیل شده.
مثالها
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
اگر بله باشد، فایل بلافاصله باز میشود، در غیر این صورت فایل در زمان ذخیره آرشیو باز میشود.
newEntrySettings
ArchiveEntrySettings
تنظیمات فشردهسازی و رمزگذاری استفاده شده برای مورد Aspose.Zip.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
باز شود، تا زمانی که آرشیو ذخیره نشود، مسدود میشود.
استثناها
path
null است.
فراخوانیکننده مجوز لازم برای دسترسی را ندارد.
path
خالی است، تنها شامل فاصلههای سفید است، یا شامل کاراکترهای نامعتبر است.
دسترسی به فایل path
رد شده است.
path
، نام فایل، یا هر دو از طول حداکثر تعیینشده توسط سیستم فراتر رفتهاند. به عنوان مثال، در پلتفرمهای مبتنی بر ویندوز، مسیرها باید کمتر از 248 کاراکتر و نام فایلها باید کمتر از 260 کاراکتر باشند.
فایل در path
شامل یک کولن (:) در وسط رشته است.
CreateEntry(string, Stream, ArchiveEntrySettings)
یک ورودی واحد را درون آرشیو ایجاد میکند.
public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)
پارامترها
name
string
نام ورودی.
source
Stream
جریان ورودی برای ورودی.
newEntrySettings
ArchiveEntrySettings
تنظیمات فشردهسازی و رمزگذاری استفاده شده برای مورد Aspose.Zip.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
اگر بله باشد، فایل بلافاصله باز میشود، در غیر این صورت فایل در زمان ذخیره آرشیو باز میشود.
newEntrySettings
ArchiveEntrySettings
تنظیمات فشردهسازی و رمزگذاری استفاده شده برای مورد Aspose.Zip.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
باز شود، تا زمانی که آرشیو ذخیره نشود، مسدود میشود.
استثناها
fileInfo
فقط خواندنی است یا یک دایرکتوری است.
مسیر مشخص شده نامعتبر است، مانند اینکه در یک درایو نامشخص باشد.
فایل در حال حاضر باز است.
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
متاداده فایل یا پوشه برای فشردهسازی.
بازگشت
نمونه ورودی 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 اشاره کند اگر ورودی یک دایرکتوری باشد.
استثناها
هر دو source
و fileInfo
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>
متدی که جریان ورودی را برای ورودی فراهم میکند.
newEntrySettings
ArchiveEntrySettings
تنظیمات فشردهسازی و رمزگذاری استفاده شده برای مورد Aspose.Zip.ArchiveEntry اضافه شده.
بازگشت
نمونه ورودی zip.
مثالها
آرشیو را با ورودی رمزگذاریشده ترکیب کنید.
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);
}
}
نکات
این متد برای .NET Framework 4.0 و بالاتر و برای نسخه .NET Standard 2.0 است.
DeleteEntry(ArchiveEntry)
اولین وقوع یک ورودی خاص را از لیست ورودیها حذف میکند.
public Archive DeleteEntry(ArchiveEntry entry)
پارامترها
entry
ArchiveEntry
ورودی برای حذف از لیست ورودیها.
بازگشت
آرشیو با ورودی حذفشده.
مثالها
در اینجا نحوه حذف تمام ورودیها به جز آخرین ورودی آمده است:
using (var archive = new Archive("archive.zip"))
{
while (archive.Entries.Count > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
استثناها
آرشیو حذف شده است.
DeleteEntry(int)
ورودی را از لیست ورودیها بر اساس ایندکس حذف میکند.
public Archive DeleteEntry(int entryIndex)
پارامترها
entryIndex
int
ایندکس صفر-مبنا از ورودی برای حذف.
بازگشت
آرشیو با ورودی حذفشده.
مثالها
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
استثناها
آرشیو حذف شده است.
entryIndex
کمتر از 0 است.-یا- entryIndex
برابر یا بزرگتر از تعداد Entries
است.
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");
}
نکات
اگر دایرکتوری وجود نداشته باشد، ایجاد خواهد شد.
استثناها
destinationDirectory
null است.
مسیر مشخص شده، نام فایل، یا هر دو از طول حداکثر تعیینشده توسط سیستم فراتر رفتهاند. به عنوان مثال، در پلتفرمهای مبتنی بر ویندوز، مسیرها باید کمتر از 248 کاراکتر و نام فایلها باید کمتر از 260 کاراکتر باشند.
فراخوانیکننده مجوز لازم برای دسترسی به دایرکتوری موجود را ندارد.
اگر دایرکتوری وجود نداشته باشد، مسیر شامل یک کاراکتر کولن (:) باشد که بخشی از برچسب درایو (“C:") نیست.
destinationDirectory
یک رشته با طول صفر است، تنها شامل فاصله سفید است، یا شامل یک یا چند کاراکتر نامعتبر است. میتوانید برای جستجوی کاراکترهای نامعتبر از متد System.IO.Path.GetInvalidPathChars استفاده کنید.
-یا- مسیر با یک کاراکتر کولن (: ) پیشوند شده باشد، یا فقط شامل آن باشد.
دایرکتوری مشخص شده توسط مسیر یک فایل است. -یا- نام شبکه شناخته شده نیست.
گذرواژه نادرست ارائه شده است. - یا - آرشیو خراب شده است.
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
باید قابل نوشتن باشد.
استثناها
outputStream
قابل نوشتن نیست.
آرشیو حذف شده است.
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 });
}
نکات
امکان ذخیره آرشیو در همان مسیری که از آن بارگذاری شده است وجود دارد. با این حال، این کار توصیه نمیشود زیرا این روش از کپی به فایل موقت استفاده میکند.
استثناها
destinationFileName
null است.
فراخوانیکننده مجوز لازم برای دسترسی را ندارد.
destinationFileName
خالی است، تنها شامل فاصلههای سفید است، یا شامل کاراکترهای نامعتبر است.
دسترسی به فایل destinationFileName
رد شده است.
destinationFileName
، نام فایل، یا هر دو از طول حداکثر تعیینشده توسط سیستم فراتر رفتهاند.
به عنوان مثال، در پلتفرمهای مبتنی بر ویندوز، مسیرها باید کمتر از 248 کاراکتر و نام فایلها باید کمتر از 260 کاراکتر باشند.
فایل در destinationFileName
شامل یک کولن (:) در وسط رشته است.
فایل پیدا نشد.
مسیر مشخص شده نامعتبر است، مانند اینکه در یک درایو نامشخص باشد.
فایل در حال حاضر باز است.
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));
}
نکات
این متد چندین (n
) فایل filename.z01، filename.z02، ...، filename.z(n-1)، filename.zip را تشکیل میدهد.
نمیتواند آرشیو موجود را چندحجمی کند.
استثناها
این آرشیو از منبع موجود باز شده است.
این آرشیو هم با روش فشردهسازی XZ فشرده و هم رمزگذاری شده است.
destinationDirectory
null است.
فراخوانیکننده مجوز لازم برای دسترسی به دایرکتوری را ندارد.
destinationDirectory
شامل کاراکترهای نامعتبر مانند “، >، <، یا | است.
مسیر مشخص شده از طول حداکثر تعیینشده توسط سیستم فراتر رفته است.
آرشیو حذف شده است.