如何检查Directory.EnumerateFiles是否不会产生任何结果

时间:2012-09-03 08:17:54

标签: c#

我有一个函数检查特定文件夹中是否存在文件,如果文件中包含主数据库中没有的数据,我将该数据写入主数据库并删除我正在使用Directory.EnumerateFiles的文件获取文件列表然后我遍历此列表以检查它们是否存在于数据库中,如果列表为空,我想从函数返回如何检查我得到的列表是否为空,如果我调试并且文件夹没有显示的文件枚举没有产生结果。

    private void GetListOfFiles()
    {
        string sourceDirectory = pathOfXmlFiles;
        if (!Directory.Exists(sourceDirectory))
        {
            return;
        }
        var xmlFiles = Directory.EnumerateFiles(sourceDirectory, "*.xml");
        foreach (var item in xmlFiles)
        {
            ReadXmlFile(item);
        }
        foreach (var item in xmlFiles)
        {
            if (_writtenToDb)
            {
                File.Delete(item);
            }
        }
    }

我使用另一个具有每25秒触发一次计时器的线程来检查是否存在这些文件,我从不停止计时器会导致内存泄漏吗?

1 个答案:

答案 0 :(得分:2)

你不需要做任何事情。如果xmlFiles为空,则foreach循环不会执行任何操作,因为没有要迭代的对象。

但是,如果确实需要在没有文件时显式返回,请使用:

if(!xmlFiles.Any())
    return;

不要忘记在源文件的顶部添加using System.Linq;


由于您在返回的文件上多次枚举,我建议您改用Directory.GetFiles。这将返回包含所有文件的数组。这样可以避免多次命中磁盘以查询现有文件。