2015-02-06 3 views
0

Мне нужно сгенерировать сообщение, которое подсчитывает количество файлов, начинающихся с указанного имени.Количество файлов, начинающихся с

Вот код:

Private void button1_click (...) 
{ 
     // this is the code to count the number of files that start with a specified string 
     String Path = "..." 
     int fCount = Directory.GetFiles (path,"InsertImage", SearchOption.AllDirectories).Length; 

     messageBox.Show("fCount"); 
} 

Это не работает для моих целей. Какие-либо предложения?

+0

использование MessageBox.Show (fCount); (без кавычек) –

+0

Также используйте «InsertImage *». –

+0

согласен с @MatthewWatson. Правильно определить шаблон –

ответ

0

Изменить существующий код:

int fCount= Directory.GetFiles(path, "InsertImage*", SearchOption.AllDirectories).Length; 
messageBox.Show(fCount); 

Примечание:

int fileCount = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Length; // Will Retrieve count of all files in directry and sub directries 

int fileCount = Directory.GetFiles(path, "*.*", SearchOption.TopDirectory).Length; // Will Retrieve count of all files in directry but not sub directries 

int fileCount = Directory.GetFiles(path, "*.xml", SearchOption.AllDirectories).Length; // Will Retrieve count of files XML extension in directry and sub directries 
0

попробовать это:

string[] files = Directory.Getfiles(path); 
for(int i = 0; i < files.length; i++) 
{ 
    if(files[i].StartsWith("string")) 
    { 
     // then do some work 
    } 
} 
+0

Зачем использовать цикл, когда вы можете сделать это, просто используя метод GetFiles()? –

+0

то как вы хотите проверить условие? – ako

+0

Directory.Gefiles (путь, шаблон, SearchOption) .Lenght предоставит количество файлов по указанному пути, соответствующий заданному шаблону и опции поиска. –

2

Если вы делаете это так, вы не должны иметь весь список файлов в памяти:

string path = "..."; 
string target = "InsertImage*"; // <--- NOTE THE "*" 

var matchingFiles = Directory.EnumerateFiles(path, target, SearchOption.AllDirectories); 
int count = matchingFiles.Count(); 

Console.WriteLine(count); 
1
int count=Directory.GetFiles(path, SearchOption.AllDirectories).Where(x => x.StartsWith(searchstring)).Count(); 

Это должно работать.