2015-08-28 2 views
0

Я использую Visual Basic, и я хочу, чтобы подсчитать все файлы, которые существуют в папке и ее подпапках .. Я попытался это:Подсчет всех файлов в папке и подпапках

Dim counter = My.Computer.FileSystem.GetFiles("C:\Folder") MsgBox("number of files is " & CStr(counter.Count))

но только подсчитывает файлы в C: \ Folder и не в C: \ Folder \ подкаталоги \ AnotherSubFolder Что я должен делать? Спасибо за помощь!

ответ

4

Используйте Directory.GetFiles(), как определено здесь: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx

Таким образом, вы бы просто использовать

Dim counter As Integer = Directory.GetFiles(someString, "*.*", SearchOption.AllDirectories).Length; 
MsgBox("Number of files is : " + counter) 

someString является каталог верхнего уровня вы хотите, чтобы начать на

"*.*" является шаблон поиска вы хотите совместить. Это получает все файлы. Если вам нужны только текстовые файлы, например, вы можете сделать "*.txt".

SearchOption перечисление имеет два варианта: AllDirectories или TopDirectoryOnly если вы только заинтересованы в точном каталоге прошло, очевидно.

+1

Большое спасибо, это именно то, что я хотел. – Technologuy

+1

Не хочу быть тем парнем, но я думаю, что '*. *' Будет получать файлы с точкой внутри своего имени. Поэтому такие файлы, как «ImHiding», у которых нет и определенный тип файла, не будут учитываться, не так ли? просто мало что может произойти. – Luke

+2

@ Luke Я думал, что вы можете быть правы, но я просто протестировал его. Он по-прежнему находит файлы без расширения. [См. Снимок экрана здесь] (http://i.imgur.com/nJlliD4.png). – sab669