为什么我的if语句没有停止?

| 我仍然对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
             }
我也尝试通过获取所有文件来进行此操作。它仍然循环并再次上载所有文件,即使是具有\ .done \的文件也是如此。
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
             }
一切都会有帮助的。 谢谢     
已邀请:
您没有布尔条件倒数吗?如果扩展名不是.done,那么您想做剩下的代码,如果扩展名是.done,那么您要转到循环的下一个迭代,对吗?当扩展名不是.done时,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++;
        }
参考文献: 字符串文字     

要回复问题请先登录注册