Zip

Tags: , | Categories: C# Posted by talgiladi on 4/15/2008 9:16 PM | Comments (2)

כיווץ בפורמט 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();

להורדת הפרוייקט

Technorati Tags: ,

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5