我們有大量日誌(共117個日誌,總共大約17GB數據)。這是直接的文字,所以我知道它會壓縮得很好。我不是在尋找很好的壓縮率或速度(但這會是一個很好的獎勵)。我目前所做的是獲取要讀取的日誌文件列表(它們在文件名中有一個日期標記,所以我首先進行過濾)。之後我得到的名單我然後使用File.ReadAllLines()
讀取每個文件,但我們也篩選上...在讀取之前壓縮大型日誌文件
private void GetBulkUpdateItems(List<string> allLines, Regex updatedRowsRegEx)
{
foreach (var file in this)
allLines.AddRange(File.ReadAllLines(file).Where(x => updatedRowsRegEx.IsMatch(x)));
allLines.Sort();
}
從網絡讀取5個文件需要約22秒。我想要做的是將文件列表壓縮成一個zip文件。在本地複製壓縮文件,然後解壓縮並完成其餘的操作。問題是我無法弄清楚如何開始。由於我使用.net 4.5,我第一次嘗試System.IO.Compression.ZipFile
,但它想要一個目錄,我不想要所有117個文件。我看到有人使用網絡流和7zip這聽起來很有希望,並且我相當確定7zip安裝在服務器上我需要日誌(可能不重要,因爲我們使用UNC路徑)。所以我卡住了。有什麼建議麼?
您可以嘗試ZipFileExtensions.CreateEntryFromFile。詳細信息可在這裏https://msdn.microsoft.com/en-us/library/hh485724%28v=vs.110%29.aspx – 2015-03-30 20:39:56
@PraveenPaulose我給你什麼建議一槍。它似乎對一個17兆的日誌文件工作正常,但後來我嘗試了最大的文件(670mb),並通過內存不足的例外。談到了一些,我認爲我們要做的是用一個已經運行在同一臺服務器上的不同程序壓縮日誌。然後,這個程序可以複製壓縮文件,並從它們中完成它需要做的事情。 – 2015-03-31 14:57:37
如果這是一個選項,你可以做到這一點。將節省編碼時間和精力:) – 2015-03-31 15:33:21