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

时间:2013-02-04 12:02:43

标签: c# winforms visual-studio-2010

我尝试了this thread上找到的内容,但没有完全按照我想要的方式工作......我有一个名为photos的文件夹may有图片与否。 picture's name是客户的matriculation。我需要将matriculation作为parameter传递,并检查是否有一个picture,其中matriculation的名称是parameter

我试过了:

public void VerifyPhoto(string matriculation)
        {
            string path = Txt_PhotosPath.Text;
            var file = Directory.GetFiles(path, matriculation + ".jpg");

        }

我如何检查是否找到了图片?我尝试对此进行比较,file != null但它不适用于var类型。有提示吗? debuging我看到它找到了图片,因为有String[1],但我不知道check它...

---更新--- path:C:“\ Users \ admin \ Desktop \ photos”matriculation:“607659.jpg” 有一个带有该名称的文件,但它一直在返回false出错了什么?

 string path = Txt_PhotosPath.Text;
            string filename = string.Format("{0}.jpg", matriculation);
            if (Directory.Exists(path))
            {
                if (File.Exists(Path.Combine(path, filename)))
                {
                    return true;
                }
                else
                    return false;
            }
            else
                return false;        

6 个答案:

答案 0 :(得分:9)

if (File.Exists(Path.Combine(path, matriculation + ".jpg"));

答案 1 :(得分:1)

以下是官方文档:http://msdn.microsoft.com/en-us/library/wz42302f.aspx

  

如果没有文件,或者没有匹配searchPattern参数的文件,   此方法返回一个空数组。

因此,将返回一个空数组,而不是检查空数组的NULL检查。

答案 2 :(得分:1)

使用Path.CombineDirectory+File.Exists

public bool VerifyPhoto(string matriculation)
{
    string dir = Txt_PhotosPath.Text;
    if(Directory.Exists(dir))
    {
        string fileName = string.Format("{0}.jpg", matriculation);
        if(File.Exists(Path.Combine(dir, fileName)))
            return true;
        else
            return false;
    }
    else
        return false;
}

答案 3 :(得分:1)

它非常简单。以下函数将帮助您检查参数中指定的名称文件是否存在。

File.Exists(Path)

命名空间:System.IO

如果文件存在,则此函数返回true。否则返回false。参数是一个字符串,它是要检查的文件的完整路径。eg: G:\Folder1\Filder2\File.jpg

它不会抛出任何异常,因为它会在找到文件时返回false。

您不必将路径和所有路径组合在一起,只需按照我的示例中的说明提供文件的完整路径。

了解更多信息click here

答案 4 :(得分:0)

不使用var file,而是使用string[] files

要检查是否找到了任何文件,请执行if (files.Length > 0)

使用var通常是非常坏主意,所以如果可以避免,请不要这样做。

答案 5 :(得分:0)

回答你的问题,为什么你不能使用!= null,是因为GetFiles()的底层代码创建了一个列表并调用了ToArray()扩展方法。

 return new List<string>(FileSystemEnumerableFactory.CreateFileNameIterator(path, userPathOriginal, searchPattern, includeFiles, includeDirs, searchOption, checkHost)).ToArray();

你需要使用: -

file.Count()  file.Length