2011-01-21 8 views
0

.NET 4에서 폴더의 파일 수를 계산해야합니다. 이 수는 폴더의 .db 파일을 제외한 모든 파일의 수를 반환합니다..NET에서 폴더 파일 수를 계산하는 가장 빠른 방법

옵션 1 :

IEnumerable<string> enumerables = Directory.EnumerateFiles(strPath, "*.*", SearchOption.TopDirectoryOnly); 
int iNumFiles = 0; 
foreach (string f in enumerables) 
{ 
    if (!f.EndsWith(".db")) 
     iNumFiles++; 
} 

//iNumFiles is the count 

옵션 2 :

int iNumFiles = 0; 
IEnumerable<string> enumerables1 = Directory.EnumerateFiles(strPath, "*.*", SearchOption.TopDirectoryOnly); 
IEnumerable<string> enumerables2 = Directory.EnumerateFiles(strPath, "*.db", SearchOption.TopDirectoryOnly); 

iNumFiles = enumerables1.Count() - enumerables2.Count(); 

//iNumFiles is the count 

내가 사용해야합니다 (정규식 또는 뭔가 다른 사용) 다른 간단하지만 더 좋은 방법이 있나요?

편집 : .db 파일을 유용하게 유지해야합니까? 내가 아는 것은 폴더 내용의 데이터베이스 (캐시)입니다.

내 파일 수가 엉망입니다.

읽어 주셔서 감사합니다.

답변

-1
new DirectoryInfo(strPath).EnumerateFiles("*.db").Count(); 
+0

그는 .db 확장자가없는 파일 수를 필요로합니다. –

+0

이것은'* .db' 파일의 수를 반환합니다. OP는 비'* .db' 파일 수를 원합니다. – delnan

0

을 설정합니다. 결과가 쿼리 가능한 개체에 저장됩니다. 그런 다음 * .db 항목을 쿼리하십시오.

var filesIcareAbout = queryObject.where(f => right(f,3) != ".db");

var queryObject = My.Computer.FileSystem.getFiles(foldername, FileIO.SearchOption.SearchTopLevelOnly, "*.*").AsQueryable();

나는 어떤 구문 쇼트 컷을했다. 이것은 구문 적으로 정확하지 않을 수도 있습니다.

+0

EnumerateFiles() 대신 getFiles()를 사용하는 이유는 무엇입니까? – kheya

+0

열거 형의 경우 dirinfo 개체를 인스턴스화해야합니다. 또한 GetFiles()에는 2 개의 오버로드가있어 좀 더 유연하게 사용할 수 있습니까 ?? 궁극적으로 저는 GetFiles에 익숙합니다 .... Stack Trace를보고 싶습니다. GetFiles가 EnumerateFiles를 호출 할 것입니다. –

관련 문제