כיווץ באמצעות זיפ
כיווץ בפורמט zip ניתן לביצוע בפשטות בדוט נט עם המחלקות היעודיות לכך.
קודם יש להוסיף את השורה using System.IO.Compression
וכעת ניתן להשתמש במחלקה שנקראת GZipStream
הבנאי מקבל 2 פרמטרים - את הזרם שממנו/אליו צריך לקרוא/לכתוב, ואת צורת הפעולה - לכווץ או לפתוח את המידע
קודם נבחר איזה קובץ אנחנו רוצים לקבץ:
FileStream source =
new FileStream(Server.MapPath("myfile.txt"), FileMode.Create);
את הקובץ שאליו נשמור את המידע המכווץ:
FileStream target =
new FileStream(Server.MapPath("myzip.zip"), FileMode.Create);
נבנה את האובייקט ונבחר באופצית הכיווץ:
GZipStream zip = new
GZipStream(target , CompressionMode.Compress);
וכעת נעביר את הבתים מקובץ המקור לקובץ המטרה:
int bytesCount;
byte[] buffer=new byte [1024];
while((bytesCount = source .Read(buffer, 0, buffer.Length)) != 0)
{
zip.Write(buffer, 0, bytesCount);
}
target.Close();
zip.Close();
לא לשכוח לסגור את הקובץ בסוף!
ובשביל לקרוא קובץ מכווץ התהליך דומה, נפתח את הקובץ שמכיל את המידע המכווץ:
FileStream source = new
FileStream(Server.MapPath("myzip.zip"), FileMode.Open);
את הקובץ שאליו נשמור את המידע שנפתח:
FileStream target = new
FileStream(Server.MapPath("myfile.txt"), FileMode .Create);
נבנה את האובייקט וכעת נחבר באופצית הפתיחה, לא כיווץ:
GZipStream zip = new
GZipStream(source, CompressionMode
.Decompress);
וכעת נעביר את הבתים מהזיפ שלנו לקובץ המטרה:
int bytesCount;
byte[] buffer=new byte [1024];
while ((bytesCount = zip.Read(buffer, 0, buffer.Length)) != 0)
{
target .Write(buffer, 0, bytesCount);
}
target.Close();
zip.Close();
להורדת הפרוייקט