string[] fileEntries = Directory.GetFiles(pathName, "*.xml");
또한 그렇게하지 그것을 강제 할 수있는 방법이 있나요 foo.xml_
같은 파일을 반환하거나 내가 반환 결과를 필터링하는 코드를 작성해야합니다.정지 암시 와일드 카드()
이것은 명령 프롬프트에서 dir *.xml
과 동일한 동작이지만 Windows 탐색기에서 *.xml
을 검색하는 것과 다릅니다.
string[] fileEntries = Directory.GetFiles(pathName, "*.xml");
또한 그렇게하지 그것을 강제 할 수있는 방법이 있나요 foo.xml_
같은 파일을 반환하거나 내가 반환 결과를 필터링하는 코드를 작성해야합니다.정지 암시 와일드 카드()
이것은 명령 프롬프트에서 dir *.xml
과 동일한 동작이지만 Windows 탐색기에서 *.xml
을 검색하는 것과 다릅니다.
피드백 보내기 현재 상태 현재 상태 이것은 의도적으로 설계된 동작입니다. MSDN에서 (주어진 노트 섹션과 예제를 살펴) :
의 searchPattern 정확히 3 문자의 파일 확장자 을 가진 것은 처음 세 문자가 일치 세 또는 이상의 문자의 확장을 가진 파일을 반환 searchPattern에 지정된 파일 확장자는 입니다. 다음과 같이
당신은 그것을 제한 할 수 있습니다 :
C# 2.0 :
string[] fileEntries = Array.FindAll(Directory.GetFiles(pathName, "*.xml"),
delegate(string file) {
return String.Compare(Path.GetExtension(file), ".xml", StringComparison.CurrentCultureIgnoreCase) == 0;
});
// or
string[] fileEntries = Array.FindAll(Directory.GetFiles(pathName, "*.xml"),
delegate(string file) {
return Path.GetExtension(file).Length == 4;
});
C# 3.0 :
string[] fileEntries = Directory.GetFiles(pathName, "*.xml").Where(file =>
Path.GetExtension(file).Length == 4).ToArray();
// or
string[] fileEntries = Directory.GetFiles(pathName, "*.xml").Where(file =>
String.Compare(Path.GetExtension(file), ".xml",
StringComparison.CurrentCultureIgnoreCase) == 0).ToArray();
그건 인해 창문의 8.3 검색 방법 . "* .xm"을 검색하려고하면 결과가 0 개가됩니다.
당신은 .NET 2.0이를 사용할 수 있습니다
string[] fileEntries =
Array.FindAll<string>(System.IO.Directory.GetFiles(pathName, "*.xml"),
new Predicate<string>(delegate(string s)
{
return System.IO.Path.GetExtension(s) == ".xml";
}));
이 보이는 기괴한 행동에 대한 이유의 어떤 생각을? 레거시 8.3 파일 이름 물건? –
2.0 프레임 워크를 대상으로하므로 => 구문을 사용할 수 없습니다. –
@Dan : 익명의 대리자를 사용하도록 업데이트 된 코드입니다. @ 존 Seigel : 네, 맞습니다. MSDN 링크에 대한 또 다른 참고 사항은 "이 메서드는"8.3 파일 이름 형식과 긴 파일 이름 형식으로 파일 이름을 검사합니다. " –