FileName -FilePath比较

时间:2017-11-13 14:45:04

标签: c# string

我试图比较两个文件名。

我构建了一个文件名,然后将其与目录中的文件名进行比较。我的代码无法比较字符串。请让我知道,我做错了什么?没有错误,但字符串永远不会相等。

DateTime dt = DateTime.Now;
Filename = "Account Daily " + dt.ToString("yyyy-MM-dd") + " .xslx";

FileInfo[] folderFiles = null;
folderFiles = dir1.GetFiles();
foreach (FileInfo aFile in folderFiles)
{
    if (String.Compare(aFile.ToString(),Filename) == 1)
    {
        // Send email with this attachment
    }
}

3 个答案:

答案 0 :(得分:2)

FileInfo.ToString()返回整个访问路径(例如 c:/ temp / file.xml)

来源:https://msdn.microsoft.com/library/system.io.fileinfo.tostring(v=vs.110).aspx

不幸的是,您为Filename变量赋值的是没有访问路径的纯文件名。因此它不能等于FileInfo.ToString()给你的任何东西。

建议:您可以使用 aFile.Name 代替 aFile.ToString()

答案 1 :(得分:1)

如果两个参数匹配,则

String.Compare返回0。因此,如果您想输入if,则应根据该值进行比较。

以下是参考资料:

|           Value           | Condition                                                                       
|-------------------------- |---------------------------------------------------------------------------------
| Less than zero            | The first substring precedes the second substring in the sort order.            
| Zero                      | The substrings occur in the same position in the sort order, or length is zero. 
| GreaterGreater than zero  | The first substring follows the second substring in the sort order.             

答案 2 :(得分:1)

如果您要做的就是检查特定文件夹中是否有特定文件,那么您可以使用具有searchpattern参数的GetFiles()重载来查找看起来像今天的文件日期:

Directory.GetFiles("c:\\my\\path", $"*{DateTime.Now.ToString("yyyy-MM-dd")}.xlsx");