2013-02-21 5 views
1

특정 파일 형식의 모든 파일을 찾는 Directory.GetFiles (string, string)을 사용하고 있습니다. 이름이 같지만 확장자가 다른 두 가지 유형의 파일이있는 경우 이러한 파일 목록이 채워져 있다는 사실을 보증 할 수 있습니까?디렉터리 메서드에서 C# GetFiles 함수

예컨대)

의사 코드

List1 -> getfiles(dir,filetype2) 
List2 -> getfiles(dir,filetype2) 

1 나열하고리스트 2 정확히 같은 일치하는 파일을 보장해야? 나는 그것이 틀림없지 만 어떤 상황이 될 수 있는지 궁금 할 것이다.

나는 항상 일종의 검증 또는 다른 추가 계층을 쓸 수 있습니다 알고 올바른 케이스

List1[4] is "2esDSd.filetype1" 
List2[4] is "2esDSd.filetype2" 

잘못된 사례

List1[4] is "3esDSd.filetype1" 
List2[4] is "2esDSd.filetype2" 

, 잘못된 입력이 여전히 가능하기 때문입니다. 그러나 궁금한 것은 좋은 습관이거나 내부 기능이 어떻게 작용 하는지를 검증/검증하는 불필요한 것입니다.

+3

음, 실행 중에 내용이 변경 될 수 있기 때문에 파일 시스템에만 의존 할 수 없습니다. 일부 기준을 보장해야하는 경우 - 사용자 정의 유효성 검증 모듈을 작성하십시오. –

+2

'Dexters'는 개인적으로 구현하거나 사용하려는 코드를 작성하고 거기에서 설명하거나 문제가 발생할 수있는 곳에서 설명하는 것이 더 합리적이라고 생각합니다. – MethodMan

답변

1

파일 시스템에 실제로 일치하는 파일이있는 경우에만 "보장"할 수 있습니다. 그리고이 경우에 아직도 당신이 그렇게처럼 알파벳 순서로 파일 이름을 얻을 수 있는지 확인하는 가장 좋은 것입니다 : 내가 말했듯이

List1 -> getfiles(dir,filetype2).OrderBy(x => x.FileName).ToList(); 
List2 -> getfiles(dir,filetype2).OrderBy(x => x.FileName).ToList(); 

그러나

의사 코드, 이것은 기존의 올바른 파일에 따라 달라집니다 , 파일 필터 (예 : "* .jpg")는 디렉토리에 쌍둥이가없는 파일과 일치하지 않습니다.

보다 강력한 솔루션은 너무처럼, 자신을 한 후, 원하는 두 개의 파일 유형의 모든 파일을 검색 결과 사이의 일치를 검색하는 것입니다 :

for each filename f1 in List1 
    get matchine file name f2 in List2 
    if it exists, add (f1, f2) to results 

의사 코드 결과는 파일 이름이 일치하는 2 튜플의 목록입니다.