שאלה: איך עושים דחיסה לקובץ בודד בC#?
-
שאלה: איך עושים דחיסה לקבצים בC#?
כלומר רצוני להשתמש עם קבצים מרובים בתוכנה שלי ואני רוצה לעשות דחיסה כדי שלא יתפסו מקום מאידך אני רוצה שיהיה לי גישה מהירה לקבצים.
אז חשבתי אולי שצריך לעשות דחיסה לקבצים בודדים.
אשמח לשמוע מה חחות דעתכם.
וגם איך עושים דחיסה בc# כי אין לי מושג. -
זה תלוי באיזה תדירות צריך לגשת לקובץ.
דחיסה בC# נעשית על ידי זרם דוחס/מחלץ, ככה:public static void Compress(string str, string fileName) { var bytes = Encoding.UTF8.GetBytes(str); using (var fileOutput = new FileStream(fileName, FileMode.Create)) using (var input = new MemoryStream(bytes)) using (var compressor = new GZipStream(fileOutput, CompressionLevel.SmallestSize)) input.CopyTo(compressor); } public static string Decompress(string fileName) { using (var inputFile = new FileStream(fileName, FileMode.Open)) using (var decompressor = new GZipStream(inputFile, CompressionMode.Decompress)) using (var textDecoder = new StreamReader(decompressor, Encoding.UTF8)) return textDecoder.ReadToEnd(); }
-
@pcinfogmach אולי ככה יוצא לפי הצרכים שלך,
אבל לא בהכרח לפי השאלה שלך. -
@pcinfogmach כתב בשאלה: איך עושים דחיסה לקובץ בודד בC#?:
@dovid
הקוד שלך עשה שגיאה ולכן תיקנתי ואז לא היה שגיאה אולי חסר לי איזהו רפרנס?
(אגב מה באמת ההבדל בין optimal ל-smallestsize?)מעניין, אצלי עובד.
Optimal זה איזון (זמן לעומת יעילות דחיסה), בעוד SmallestSize אומר להתחשב רק ביעילות דחיסה.