比较文件的更好方法

本文关键字:方法 更好 文件 比较 | 更新日期: 2023-09-27 18:26:34

我有一个方法,它接收字符串的IEnumerable,这些字符串基本上是文件列表(PDF),然后在该方法中,我得到一个字符串数组,并用来自不同位置的文件(TIFF)填充它,该方法的主要思想是将接收列表中的所有文件与我在该方法中填写的另一个列表中的文件进行匹配,并确保每个PDF都有相应的TIFF文件。现在这个方法有效,但我只是想知道是否有更好的方法来做这一切。

    private bool MatchingFiles(IEnumerable<string> files)
    {
        var outputFiles = Directory.GetFiles(TifOutput, "*.tif");
        bool foundmatch = true;
        foreach (string file in files)
        {
            string[] strArray = file.Split('''');
            string fileName = strArray[strArray.Length - 1].Replace("PDF", "");
            bool filematch = false;
            foreach (string outputFile in outputFiles)
            {
                if (outputFile.Contains(fileName))
                {
                    filematch = true;
                    break;
                }
            }
            if (!filematch)
            {
                LogMessage(string.Format("File Not Available Yet: {0}", fileName), Level.Info, null);
                foundmatch = false;
                break;
            }
        }
        return foundmatch;
    }

提前感谢任何能帮助我的人:)!

比较文件的更好方法

使用Path.GetfileNameWithoutExtension只获取文件名,然后使用Enumerable.Except,如:

你可以做:

return files.Select(r => Path.GetFileNameWithoutExtension(r))
            .Except(outputFiles.Select(r => Path.GetFileNameWithoutExtension(r)))
            .Any();

return files.Select(Path.GetFileNameWithoutExtension)
            .Except(outputFiles.Select(Path.GetFileNameWithoutExtension))
            .Any();