הארכיונים של ZIP משמשים לדחיסת ושמירת קובץ או תיקיה אחד או יותר במיכל יחיד. ארכיון ZIP מקפל את הקבצים והתיקיות וכן מחזיק את פרטי המטא נתונים שלהם. השימוש הנפוץ ביותר בארכיון הוא הקטנת גודל הקבצים לאחסון או שידור והחלת הצפנה לאבטחה. מלבד כלי דחיסת הקבצים, תכונות הדחיסה/חילוץ האוטומטיות משמשות גם בתוך יישומי שולחן עבודה ואינטרנט שונים להעלאה, הורדה, שיתוף או הצפנה של הקבצים. מאמר זה מתמקד גם בתרחישים דומים ומציג כמה דרכים קלות לדחיסת קבצים או תיקיות וליצירת ארכיוני ZIP באופן תכנותי באמצעות C#.
במאמר זה, תלמד כיצד לבצע את פעולות ארכיון ZIP הבאות:
- צור ארכיון ZIP באמצעות C#
- הוסף מספר קבצים לארכיון ZIP
- הוסף תיקיות לארכיון ZIP
- צור ארכיון ZIP מוגן בסיסמה באמצעות ZipCrypto
- הצפנת ארכיון ZIP עם הצפנת AES
- הגדר מצב דחיסה מקבילית
ספריית C# ZIP
Aspose.ZIP עבור .NET הוא ממשק API חזק וקל לשימוש עבור דחיסה או פריצת קבצים ותיקיות בתוך יישומי NET. זה גם מספק טכניקות הצפנת AES להצפנת הקבצים ב-ZIP ב-C#. אתה יכול להתקין את ה-API מ-NuGet או להוריד את הקבצים הבינאריים שלו מהקטע הורדות.
צור ארכיון ZIP ב-C#
להלן השלבים לדחיסת קובץ על ידי הוספתו לארכיון ZIP:
- צור אובייקט FileStream עבור ארכיון הפלט ZIP.
- פתח את קובץ המקור לתוך אובייקט FileStream.
- צור אובייקט במחלקה ארכיון.
- הוסף את הקובץ לארכיון בשיטת Archive.CreateEntry(string, FileStream).
- צור את ארכיון ה-ZIP בשיטת Archive.Save(FileStream).
דוגמת הקוד הבאה מראה כיצד להוסיף קובץ לארכיון ZIP באמצעות C#.
// צור FileStream עבור פלט ZIP ארכיון
using (FileStream zipFile = File.Open("compressed_file.zip", FileMode.Create))
{
// קובץ שיש להוסיף לארכיון
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings()))
{
// הוסף קובץ לארכיון
archive.CreateEntry("alice29.txt", source1);
// קובץ ZIP
archive.Save(zipFile);
}
}
}
הוסף מספר קבצים לארכיון ZIP ב-C#
במקרה שאתה רוצה להוסיף קבצים מרובים לארכיון ZIP, אתה יכול לעשות זאת באחת מהדרכים הבאות.
C# ZIP קבצים מרובים באמצעות FileStream
בשיטה זו, המחלקה FileStream משמשת להוספת קבצים לארכיון ZIP באמצעות השיטה Archive.CreateEntry(String, FileStream). דוגמת הקוד הבאה מראה כיצד להוסיף קבצים מרובים לתוך ZIP ב-C#.
// צור FileStream עבור פלט ZIP ארכיון
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// קובץ שיש להוסיף לארכיון
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
// קובץ שיש להוסיף לארכיון
using (FileStream source2 = File.Open("asyoulike.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
// הוסף קבצים לארכיון
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik3.txt", source2);
// ZIP את הקבצים
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "two files are compressed in this archive" });
}
}
}
}
C# ZIP קבצים מרובים באמצעות FileInfo
אתה יכול גם להשתמש במחלקה FileInfo להוספת קבצים מרובים לארכיון ZIP. בשיטה זו, הקבצים ייטענו באמצעות המחלקה FileInfo ויתווספו לארכיון ZIP באמצעות השיטה Archive.CreateEntry(String, FileInfo). דוגמת הקוד הבאה מראה כיצד ל-ZIP מספר קבצים באמצעות מחלקת FileInfo ב-C#.
// צור FileStream עבור פלט ZIP ארכיון
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// קבצים שיש להוסיף לארכיון
FileInfo fi1 = new FileInfo("alice29.txt");
FileInfo fi2 = new FileInfo("fields.c");
using (var archive = new Archive())
{
// הוסף קבצים לארכיון
archive.CreateEntry("alice29.txt", fi1);
archive.CreateEntry("fields.c", fi2);
// צור ארכיון ZIP
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}
קבצי ZIP באמצעות נתיב
במקום להשתמש במחלקות FileInfo או FileStream עבור ערכי ה-ZIP, אתה יכול לספק את הנתיב של הקובץ ישירות לשיטת Archive.CreateEntry(שם מחרוזת, נתיב מחרוזת, Boolean openImmediately, ArchiveEntrySettings newEntrySettings). דוגמת הקוד הבאה מראה כיצד לבצע ZIP באמצעות הנתיב שלהם.
// צור FileStream עבור פלט ZIP ארכיון
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
// צור ארכיון
using (var archive = new Archive())
{
// הוסף קובץ לארכיון ZIP
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
הוסף תיקיות לארכיון ZIP ב-C#
אתה יכול ZIP תיקיה עם ספריית C# ZIP, שיכולה להיות חלופה נוספת של הוספת קבצים מרובים לארכיון ZIP. פשוט הכניסו את קבצי המקור לתיקיה והוסיפו את התיקיה הזו לארכיון ה-ZIP. להלן השלבים ל-zip תיקייה ב-C#:
- צור אובייקט במחלקה FileStream עבור ארכיון הפלט ZIP.
- צור מופע של המחלקה Archive.
- השתמש במחלקה DirectoryInfo כדי לציין את התיקיה שיש לדחוס.
- השתמש בשיטה Archive.CreateEntries(DirectoryInfo) כדי להוסיף תיקיה ל-ZIP.
- צור את ארכיון ה-ZIP בשיטת Archive.Save(FileStream).
דוגמת הקוד הבאה מראה כיצד להוסיף תיקיה ל-ZIP ב-C#.
// צור FileStream עבור פלט ZIP ארכיון
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive())
{
// תיקייה לרכוב
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// צור ארכיון ZIP
archive.Save(zipFile);
}
}
צור ZIP מוגן באמצעות סיסמה באמצעות ZipCrypto ב-C#
אתה יכול להגן על ארכיוני ה-ZIP באמצעות סיסמאות ולהחיל הצפנת ZipCrypto. לשם כך, המחלקה ArchiveEntrySettings משמשת בבנאי של Archive שמקבל את סוג ההצפנה כפרמטר השני.
דוגמת הקוד הבאה מראה כיצד ליצור ארכיון ZIP מוגן בסיסמה באמצעות ZipCrypto ב-C#.
// צור FileStream עבור פלט ZIP ארכיון
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
{
// הוסף תיקיה לארכיון
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// צור ארכיון ZIP
archive.Save(zipFile);
}
}
C# צור ZIP מוגן באמצעות סיסמה עם הצפנת AES
Aspose.ZIP עבור .NET גם מאפשר לך להחיל הצפנת AES כדי להגן על ארכיוני ה-ZIP. אתה יכול להשתמש בשיטות ההצפנה הבאות של AES:
- AES128
- AES192
- AES256
על מנת להחיל הצפנת AES, API מציע את המחלקה AesEcryptionSettings. דוגמת הקוד הבאה מראה כיצד ליצור ZIP מוגן בסיסמה עם הצפנת AES ב-C#.
// צור FileStream עבור פלט ZIP ארכיון
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
{
// הוסף תיקיה לארכיון
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// צור ארכיון ZIP
archive.Save(zipFile);
}
}
הגדר מצב דחיסה מקבילה
אתה יכול גם להגדיר את ה-API עבור דחיסה מקבילה במקרה של מספר ערכים. לשם כך, אתה יכול לציין את מצב הדחיסה המקבילה באמצעות המחלקה ParallelOptions. Aspose.ZIP עבור .NET מספק את מצבי הדחיסה המקבילים הבאים.
- לעולם לא - אין לדחוס במקביל.
- תמיד - האם לדחוס במקביל (זהירות מחוסר זיכרון).
- אוטומטי - החלט אם להשתמש בדחיסה מקבילה או לא על הערכים. אפשרות זו עשויה לדחוס חלק מהערכים במקביל בלבד.
דוגמת הקוד הבאה מראה כיצד להגדיר מצב דחיסה מקבילית תוך דחיסה של מספר קבצים עם ספריית C# ZIP של Aspose.
// לדוגמאות מלאות וקבצי נתונים, נא עבור אל https://github.com/aspose-zip/Aspose.ZIP-for-.NET
using (FileStream zipFile = File.Open(dataDir + "UsingParallelismToCompressFiles_out.zip", FileMode.Create))
{
using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
{
using (FileStream source2 = File.Open(dataDir + "asyoulik.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2);
//הגדירו את קריטריון ההקבלה
var parallelOptions = new ParallelOptions
{
ParallelCompressInMemory = ParallelCompressionMode.Always
};
archive.Save(zipFile,
new ArchiveSaveOptions()
{
ParallelOptions = parallelOptions,
Encoding = Encoding.ASCII,
ArchiveComment = "There are two poems from Canterbury corpus"
});
}
}
}
}
למידע נוסף על ספריית ZIP של C# .NET
גלה עוד על ה-C# ZIP API שלנו באמצעות המשאבים הבאים:
הפוך ארכיון ZIP באינטרנט
אתה יכול גם לנסות את האפליקציה המקוונת החינמית, המבוססת על Aspose.ZIP עבור .NET, כדי לדחוס קבצים לארכיוני ZIP.
סיכום
במאמר זה, למדת כיצד ליצור ארכיוני ZIP באופן תכנותי ב-C#. דוגמאות הקוד הדגימו כיצד להוסיף קבצים ותיקיות בארכיון ZIP. בנוסף, סקרנו גם כיצד ליצור ארכיוני ZIP מוגני סיסמה עם שיטות הצפנה של ZipCrypto ו-AES באמצעות ספריית ה-ZIP של C# Aspose. לצד זאת, נדונה בסוף גם דחיסה מקבילה של מספר ערכים. למקרה שיהיו לך שאלות או שאילתות כלשהן, תוכל לשאול אותנו דרך הפורום שלנו.