我试图比较两个文件名。
我构建了一个文件名,然后将其与目录中的文件名进行比较。我的代码无法比较字符串。请让我知道,我做错了什么?没有错误,但字符串永远不会相等。
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
}
}
答案 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");