如何检查文件夹中的文件名

时间:2011-06-30 13:03:32

标签: c# asp.net

我希望能够使用c#遍历文件夹中某些图像文件的名称。因此,对于intance,我有一个名为image的文件夹,其中包含以下图像

图像    dog.jpg    cat.jpg    horse.jpg

我希望能够通过名称并能够说出

if(filename == dog.jpg)
  return true
else
return false

那种性质的东西

谢谢

6 个答案:

答案 0 :(得分:7)

您应该在Exists上使用静态System.IO.File方法。

return System.IO.File.Exists("dog.jpg")

由于该方法返回一个布尔值,因此在您给出的示例中不需要if语句。

您还可以使用一些Linq魔法来确定文件夹结构中是否存在文件,如下所示:

var dir = new System.IO.DirectoryInfo(startFolder);
var fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
bool fileExists = fileList.Any(f => f.FullName == "dog.jpg");

甚至更短:

return System.IO.Directory
   .GetFiles(@"c:\myfolder", "dog.jpg", SearchOption.AllDirectories)
   .Any();

将搜索指定的文件夹和所有子文件夹,其格式为“dog.jpg”。 Any()扩展方法只会检查IEnumerable是否包含任何项目。我认为这是最有效的方式(基于直觉)。

答案 1 :(得分:1)

http://weblogs.asp.net/israelio/archive/2004/06/23/162913.aspx只需在“//使用文件名执行”区域中插入if:

// How much deep to scan. (of course you can also pass it to the method)
const int HowDeepToScan=4;

public static void ProcessDir(string sourceDir, int recursionLvl) 
{
  if (recursionLvl<=HowDeepToScan)
  {
    // Process the list of files found in the directory.
    string [] fileEntries = Directory.GetFiles(sourceDir);
    foreach(string fileName in fileEntries)
    {
       // do something with fileName
       Console.WriteLine(fileName);
    }

    // Recurse into subdirectories of this directory.
    string [] subdirEntries = Directory.GetDirectories(sourceDir);
    foreach(string subdir in subdirEntries)
       // Do not iterate through reparse points
       if ((File.GetAttributes(subdir) &
            FileAttributes.ReparsePoint) !=
                FileAttributes.ReparsePoint)

            ProcessDir(subdir,recursionLvl+1);
  }

}

答案 2 :(得分:1)

获取所有文件

string[] filePaths = Directory.GetFiles(@"c:\yourfolder\");

并迭代它

答案 3 :(得分:1)

DirectoryInfo di = new DirectoryInfo("c:\\Images");
 var files = di.GetFiles("*.jpg");
 foreach (var fileInfo in files)
 {
     if (fileInfo.Name == "dog.jpg")
              return true;
 }
 return false;

答案 4 :(得分:1)

使用Directory.GetFiles()

foreach(var file in (myDir.GetFiles("*.jpg")
{
   if(file.Name == "dog.jpg") return true;
}

答案 5 :(得分:1)

        var files = System.IO.Directory.GetFiles("directory", "*.jpg");
        foreach (var item in files)
        {
            if (System.IO.Path.GetFileName(item) == "dog.jpg")
            { 
                // File found.                
            }
        }