צור ZIP ב-C#

הארכיונים של ZIP משמשים לדחיסת ושמירת קובץ או תיקיה אחד או יותר במיכל יחיד. ארכיון ZIP מקפל את הקבצים והתיקיות וכן מחזיק את פרטי המטא נתונים שלהם. השימוש הנפוץ ביותר בארכיון הוא הקטנת גודל הקבצים לאחסון או שידור והחלת הצפנה לאבטחה. מלבד כלי דחיסת הקבצים, תכונות הדחיסה/חילוץ האוטומטיות משמשות גם בתוך יישומי שולחן עבודה ואינטרנט שונים להעלאה, הורדה, שיתוף או הצפנה של הקבצים. מאמר זה מתמקד גם בתרחישים דומים ומציג כמה דרכים קלות לדחיסת קבצים או תיקיות וליצירת ארכיוני ZIP באופן תכנותי באמצעות C#.

במאמר זה, תלמד כיצד לבצע את פעולות ארכיון ZIP הבאות:

ספריית C# ZIP

Aspose.ZIP עבור .NET הוא ממשק API חזק וקל לשימוש עבור דחיסה או פריצת קבצים ותיקיות בתוך יישומי NET. זה גם מספק טכניקות הצפנת AES להצפנת הקבצים ב-ZIP ב-C#. אתה יכול להתקין את ה-API מ-NuGet או להוריד את הקבצים הבינאריים שלו מהקטע הורדות.

צור ארכיון ZIP ב-C#

להלן השלבים לדחיסת קובץ על ידי הוספתו לארכיון ZIP:

דוגמת הקוד הבאה מראה כיצד להוסיף קובץ לארכיון 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#:

דוגמת הקוד הבאה מראה כיצד להוסיף תיקיה ל-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. לצד זאת, נדונה בסוף גם דחיסה מקבילה של מספר ערכים. למקרה שיהיו לך שאלות או שאילתות כלשהן, תוכל לשאול אותנו דרך הפורום שלנו.

ראה גם

בטל קבצים או חילץ קבצים באמצעות C#פתח קבצים בארכיון ZIP באמצעות C#צור ארכיון 7z (7-Zip) ב-C# .NET
פתח או חלץ קובץ 7z (7zip) ב-C# .NETצור וחלץ ארכיוני GZip באמצעות C#המר קבצי RAR לארכיון ZIP ב-C#
המר ארכיון ZIP ל-TAR ב-C#צור ארכיון ZIP שטוח ב-C#צור ארכיון לחילוץ עצמי עם הפעלה ב-C#
צור קבצי TAR.GZ ו-TAR.XZ ב-C#מחק קבצים בארכיון ZIP ב-C#חלץ ארכיון ZIP מקונן ב-C#
מזג ארכיוני ZIP או TAR מרובים ב-C#