2013-07-01 107 views
0

我的程序每小時產生一個系統運行的信息日誌,其中包含各種數據,如訪問時間,數據傳輸和任何遇到的故障/警告。不幸的是,這些日誌文件的大小可以從10,000KB到25,000KB,所以我至少在24小時之後開始單獨壓縮它們,這樣我的系統在任何時候都只有24個解壓縮的日誌文件。訪問壓縮文件而不解壓縮?

我需要解決的問題是,該軟件的一部分是「診斷」窗口,用戶可以根據文件的創建時間從選定的日期範圍加載日誌文件,並以易於閱讀的方式查看其內容格式。據我所知,爲了使文件顯示在搜索結果中,必須有一個允許檢查.zip的例外情況,但我無法訪問任何文件的數據以查看所述.zip文件是否屬於日期範圍。

我的問題是:他們是我的一種方式來訪問壓縮文件的信息(並進一步擴展其內容),而無需解壓縮文件,搜索,重新壓縮文件?如果只有1或2個文件落在日期範圍內,那麼解壓一百個或更多文件看起來工作量太大。

+0

使用該文件的創建/修改時間... –

+0

它可能有助於瞭解什麼是壓縮文件 – Jonesopolis

+1

您可以看到zip頭文件(文件名和大小),但用於從特定文件獲取數據,你需要解壓縮 – 2013-07-01 19:26:01

回答

1

您應該爲每個壓縮文件的文件名添加時間戳。

通常,當您壓縮文件時,您將文件的實際數據轉換爲不可讀的格式。大多數壓縮算法(記住有很多)在非常不方便的層面上工作,這就是爲什麼你真的需要解壓縮文件才能獲得原始數據。 (沒有免費午餐這樣的東西。)

幸運的是,一個文件不僅僅是一個文件!因爲你是完全正確的,不得不閱讀一個文件來處理它,那將是非常糟糕的!想象一下,如果必須讀取每個文件以找出目錄中的位置,則必須搜索文件系統。

根據您所使用的確切系統,有多種方式可以訪問與您的文件相關的元數據。例如,在使用命令ls -l的unix風格的機器中,您將獲得最後編輯的信息。

也就是說,日誌文件通常具有以時間戳開頭的名稱,因爲這個確切原因。如果你想保留你的文件名,那麼通過最後編輯的日期可能是一條路。

1

一個好的zip庫(例如SharpZipLib)應該允許您遍歷存檔中包含的文件而不用提取它們。這將允許您查詢關聯的文件日期。例如,使用前面提到的SharpZipLib,您只需要檢查存檔中包含的ZipEntry對象的DateTime屬性。

+0

我會爭辯說,如果你沒有真正壓縮或解壓縮任何文件,像SharpZibLib這樣的庫是嚴重矯枉過正的。 –

+0

大多數情況下不允許使用非內部庫。因爲這是一個盈利軟件 – DarthSheldon