2014-03-12 78 views
0

無內容檢查檢查zip文件的文件

我有兩個目錄C:\Workspace\TestProject\ZipFileA.zip\爲目錄「一個」和C:\Workspace\Reports\Latest\爲目錄「」 ......裏面目錄一個,多個日誌文件在那裏,裏面目錄「」多個日誌文件中是否有...

我需要檢查目錄「A」的每個日誌文件存在於主任是'B'還是不。 Incase如果目錄'A'的任何日誌文件不存在或目錄'B'中不存在,那麼我需要拋出異常或返回false。基本上,A目錄的文件應該存在於'B'目錄中。如果'B'包含不在'A'中的其他文件,則不存在問題

如何檢查並返回bool/throw異常?

+0

你問的關於閱讀物理目錄或LINQ內的東西?我不明白。抱歉。 – johnny

+0

http://msdn.microsoft.com/en-us/library/bb546137.aspx很長的例子。 – johnny

+0

我更新了問題。作爲zip文件中的日誌文件來檢查另一個正常物理目錄中存在的文件。 – venkat

回答

0

使用相交方法返回兩個列表現值

var dirAFiles = System.IO.Directory.GetFiles("c:\\dirA").Select(s => System.IO.Path.GetFileName(s)); 
var dirBFiles = System.IO.Directory.GetFiles("c:\\dirB").Select(s => System.IO.Path.GetFileName(s)); 
var filesInDirAAndDirB = dirAFiles.Intersect(dirBFiles); 

不要忘了選擇文件名,只是因爲GetFiles返回文件

的完整路徑拋出一個異常,只是排除從A名單中的A和B現有的文件如果任何文件存在,你有一個錯誤

if (dirAFiles.Except(filesInDirAAndDirB).Any()) 
{ 
// error 
} 

編輯: 由於沒有必要與兩個目錄中的文件列表相交,因此被刪除的其他答案要好得多。一個簡單的

dirAFiles.Except(dirBFiles).Any() 

是足以找出dirA中是否存在任何元素,而不存在於dirB。 噢,還有沒有殺死像過度殺傷:p

+0

dirA基本上是zip文件路徑。上面的代碼是否適用於檢查 – venkat

+0

不是直接的,如果你想使用zip文件,你需要列出它的內容並在dirAFiles中設置值。要閱讀zip文件的內容,請參閱http://stackoverflow.com/questions/4069092/c-sharp-list-of-files-in-an-archive – samy