- 目標:
- 在 C#.NET 程式內處理 *.zip 壓縮檔 (內含文字檔)的解壓縮 (decompress)。
- 將解壓縮後的文字檔讀進記憶體內 (memory),並將每行 (per-line)的字串 (string)儲存至 List 集合 (collection),以俾方便處理。
- 主要做法:
- 因官方未提供處理解壓縮 .zip 壓縮格式機制,所以需下載 3rd party 的類別庫 (class library)。這裡以 SharpZipLib ( formerly NZipLib) 類別庫來處理解壓縮。
- 利用 SharpZipLib 內的 ZipInputStream 開啟 .zip 壓縮檔。
string fname = @"C:\Download\TxtData.zip"; ZipInputStream zipStream = new ZipInputStream(File.Open(fname, FileMode.Open));
- ZipInputStream 會依據所指定的緩衝區大小,依序將已解壓縮的文字檔內容讀至「位元組陣列 (Byte array)」;同時再利用已新增的 MemoryStream (記憶體串流)物件讀進 Byte array。
MemoryStream memStream = new MemoryStream(); int bufferSize = 2048; //指定的緩衝區大小 int readCount = 0; //回傳已讀取的位元組數目 byte[] buffer = new byte[bufferSize]; readCount = zipStream.Read(buffer, 0, bufferSize); while (readCount > 0) { memStream.Write(buffer, 0, readCount); readCount = zipStream.Read(buffer, 0, bufferSize); }