4

我尝试了我在这个线程上找到的内容,但没有完全按照我想要的方式工作......我有一个名为photos它的文件夹是否may有图片。picture's namematriculation客户的。我需要通过matriculationasparameter并检查是否有一个我通过 aspicture的名称matriculationparameter

我试过这个:

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;        
4

6 回答 6

8
if (File.Exists(Path.Combine(path, matriculation + ".jpg"));
于 2013-02-04T12:04:15.190 回答
2

使用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;
}
于 2013-02-04T12:09:43.353 回答
1

这是官方文档所说的:http: //msdn.microsoft.com/en-us/library/wz42302f.aspx

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

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

于 2013-02-04T12:08:29.890 回答
1

它很容易的东西。以下函数将帮助您检查参数中指定名称的文件是否存在。

File.Exists(Path)

命名空间:System.IO

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

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

您不必将路径和所有内容结合起来,只需按照我的示例中所述提供文件的完整路径即可。

更多信息请点击这里

于 2013-02-04T12:33:19.963 回答
0

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

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

使用它通常是一个非常糟糕的主意var,所以如果你能避免它,就不要这样做。

于 2013-02-04T12:06:09.210 回答
0

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

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

您将需要使用:-

file.Count()  file.Length
于 2013-02-04T12:11:00.860 回答