2011-01-28 57 views

答えて

13

これを試してみてください:

var count = System.IO.Directory.GetFiles(@"c:\\Temp\\") 
           .Count(p => Path.GetExtension(p) != ".jpg"); 

幸運を!

+1

+1 'GetExtension'はファイル名' EndsWith' ".jpg"をチェックするのではなく正しい方法です。 –

6

あなたはディレクトリにDirectoryInfoオブジェクトを使用して、フィルタとそれにGetFiles()を行うことができます。

4

のLINQのWhereメソッドの使用:

Directory.GetFiles(path).Where(file => !file.EndsWith(".jpg")).Count(); 
+0

@ John-89ありがとう、この方法については知らなかった。 – nan

+0

@ John-89:なぜそれがお勧めではないか知っていますか?または詳細情報へのリンクがありますか?ちょっと興味があるんだけど。 –

+0

@ John-89:これに私の頭の中に浮かび上がる大きな「引用要」記号があります。 –

1
public static string[] MultipleFileFilter(ref string dir) 
{ 
    //determine our valid file extensions 
    string validExtensions = "*.jpg,*.jpeg,*.gif,*.png"; 

    //create a string array of our filters by plitting the 
    //string of valid filters on the delimiter 
    string[] extFilter = validExtensions.Split(new char[] { ',' }); 

    //ArrayList to hold the files with the certain extensions 
    ArrayList files = new ArrayList(); 

    //DirectoryInfo instance to be used to get the files 
    DirectoryInfo dirInfo = new DirectoryInfo(dir); 

    //loop through each extension in the filter 
    foreach (string extension in extFilter) 
    { 
     //add all the files that match our valid extensions 
     //by using AddRange of the ArrayList 
     files.AddRange(dirInfo.GetFiles(extension)); 
    } 

    //convert the ArrayList to a string array 
    //of file names 
    return (string[])files.ToArray(typeof(string)); 
} 

すると、句が必要とされない拡張子を持つファイルをフィルタリングするには '' LINQを使用することができます

アレックス

1

単純なLINQ文を使ってJPGを除外することができます。

Directory.GetFiles("C:\\temp\\").Where(f => !f.ToLower().EndsWith(".jpg")).Count(); 
+0

Em ...拡張子のない "abc.jpg"のファイルがあります... –

0
System.IO.Directory.GetFiles("c:\\Temp\\").Where(f => !f.EndsWith(".jpg")).Count(); 
0

いつでもLINQを使用できます。

return GetFiles("c:\\Temp\\").Where(str => !str.EndsWith(".exe")).Count(); 
1
string[] extensions = new string[] { ".jpg", ".gif" }; 

var files = from file in Directory.GetFiles(@"C:\TEMP\") 
      where extensions.Contains((new FileInfo(file)).Extension) 
      select file; 

files.Count(); 
+1

彼は特定のファイルを除外しようとしているので、あなたは 'Contains'条件を否定する必要があります。 –

関連する問題