2014-03-12 2 views
0

어떤 내용 확인되지확인 파일은 다른 디렉토리에 존재

나는 디렉토리로 C:\Workspace\TestProject\ZipFileA.zip\ 두 개의 디렉토리를 디렉토리 'B'... 내부에 ''와 C:\Workspace\Reports\Latest\ 여러 로그 파일 디렉토리 'B'여러 로그 파일은 내부 및 ...

내가 디렉토리 'A'의 각 로그 파일을 확인해야

이사의 존재가이 디렉토리 있습니다 y '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 단지 제외 예외를 throw 할 파일

의 전체 경로를 반환 때문

파일 이름을 선택하는 것을 잊지 마세요 어떤 파일이 존재하는 경우 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