为什么我的if语句没有停止
本文关键字:语句 我的 if 为什么 | 更新日期: 2023-09-27 17:57:44
我还是C#的新手,一直在这个问题上。
我正在尝试读取文件并获取文件扩展名,如果文件名末尾没有".done",请继续。然后在剩下的代码中,我将数据上传到数据库,并将文件名更改为".done"。
问题是我查看文件的If语句返回true,并再次上传所有文件,而不仅仅是需要上传的文件。我尝试了很多方法,但似乎都不起作用。
DirectoryInfo DirInfo = new DirectoryInfo(sFolder);
FileInfo[] fileEntries = DirInfo.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly);
foreach (FileInfo fileInfo in fileEntries)
{
if (fileInfo.Extension != ".done")
continue;
// More code
}
我也尝试过获取所有文件。它仍然循环并再次上传所有文件,即使是那些已经完成.的文件
DirectoryInfo DirInfo = new DirectoryInfo(sFolder);
FileInfo[] fileEntries = DirInfo.GetFiles();
foreach (FileInfo fileInfo in fileEntries)
{
if (fileInfo.Name != ".done")
continue;
// More code
}
这段代码有效,但我需要更改它,因为文件扩展名会更改。
DirectoryInfo DirInfo = new DirectoryInfo(sFolder);
FileInfo[] fileEntries = DirInfo.GetFiles("*.ivc", System.IO.SearchOption.TopDirectoryOnly);
foreach (FileInfo fileInfo in fileEntries)
{
if (fileInfo.Name == ".ivc")
continue;
// More code
}
任何事情都会有帮助。
感谢
您的布尔条件不是向后的吗?如果扩展没有完成,你想完成剩下的代码,如果完成了,你想进入循环的下一次迭代,对吧?continue关键字将在扩展未完成时带您进行下一次迭代!
foreach (FileInfo fileInfo in fileEntries)
{
if (fileInfo.Name == ".done")
continue;
// More code
}
为什么不只要求具有您要查找的扩展名的文件?
DirectoryInfo DirInfo = new DirectoryInfo(sFolder);
FileInfo[] fileEntries = DirInfo.GetFiles("*.done", System.IO.SearchOption.TopDirectoryOnly);
foreach (FileInfo fileInfo in fileEntries)
{
// do stuff
}
我建议尽可能使用积极思维的"最佳编码"实践(这一建议也可以应用于生活),因为它们通常更容易阅读。与其使用"不相等"条件,不如使用"等于"条件,如下所示:
// just for this example
var folder = Environment.CurrentDirectory;
var dirInfo = new DirectoryInfo(folder);
// type of files to retrieve
// @ is for 'string literal' (see link below)
var extension = @".ivc";
// this translates to: "*.ivc"
var allFiles = @"*" + extension;
// the extension of files already processed, and hence, skipped
var skipExtension = @".done";
var fileEntries = dirInfo.GetFiles(allFiles, System.IO.SearchOption.TopDirectoryOnly);
// track number of files processed
var filesProcessed = 0;
foreach (var fileInfo in fileEntries)
{
// skip files that have already been processed
if (fileInfo.Extension == skipExtension)
{
continue;
}
// process new files found in this directory
filesProcessed++;
}
参考文献:字符串文字