2011-01-24 95 views
0

我正在生成一些.csv文件,我需要在Zip文件中壓縮這些文件。好吧,我有一個框架來做到這一點,可能一切都會好起來的。使用c#計算Zip文件中的文件數

但是!正如TDD所說的,在我進行一些測試之後,我可以編寫代碼!

我的第一個測試聽起來很簡單,但是我在閱讀Zip文件時遇到一些問題,任何人都知道一個簡單的方法來計算我的zip文件中的文件數量?

+0

咦?你在問什麼? – SLaks

+0

你說你有一個框架,我認爲這意味着一個zip庫,允許你創建zip文件。這是否也不讀取zip文件?如果是這樣,那麼你應該能夠加載壓縮文件,然後直接得到一個計數,或者可能必須遍歷虛擬目錄結構來獲得計數(如果有的話)。這取決於你的圖書館的實施。如果你還沒有圖書館,那麼下面的其他人會爲你指定一些圖書館。 :) – Chris

+0

尼斯克里斯!我的圖書館是一些遺留代碼,但最初我會繼續在主項目中使用她。但在我的測試項目中,我想確認我的代碼完全符合我的要求。我正在使用DotNetZip,很快我會發布我的代碼。 – Custodio

回答

4

您似乎在尋找類似DotNetZip的東西。

編輯:例如:

int count; 
using (ZipFile zip = ZipFile.Read(path)) 
    count = zip.Count; 
+0

你可以使用DotNetZip建議一些簡單計數的樣本嗎? – Custodio

1

我不認爲這是你問一個TDD的問題,但無論如何,我會回答。

 
[Test] 
public void countsNumberOfFilesInZip() { 
    var counter = new FileCounter("existing_archive_with_2_files.zip"); 
    AssertEqual(2, counter.count()); 
} 

現在,使用您選擇的庫,使FileCounter工作。一旦它有效並且你有一個通過測試,如果你願意的話,重構代碼,以便它使用一個模擬框架來模擬對zip庫的調用。現在,您不需要依賴文件系統。 (我可能不會走這麼遠,除非你的測試由於磁盤I/O而變得太慢)

+0

謝謝@bcarlso!我理解I/O的問題,但在這種情況下,我真的想要一些將文件保存在磁盤中的集成測試。我只是使用模擬從數據庫中帶出假數據。 – Custodio