簡體   English   中英

如何檢查Directory.EnumerateFiles是否不會產生任何結果

[英]how to check if Directory.EnumerateFiles does not produce any results

我有一個功能,檢查特定文件夾中是否存在文件,如果文件具有主數據庫中不存在的數據,我將該數據寫入主數據庫並刪除我使用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秒觸發一次的計時器,我永遠不會停止計時器,這會導致內存泄漏嗎?

你不需要做任何事情。 如果xmlFiles為空,則兩個foreach循環都不會執行任何操作,因為沒有要迭代的對象。

但是,如果您確實需要在沒有文件的情況下顯式返回,請使用以下命令:

if(!xmlFiles.Any())
    return;

別忘了using System.Linq;添加using System.Linq; 在源文件的頂部。


由於您在返回的文件上多次枚舉,我建議您使用Directory.GetFiles 這將返回包含所有文件的數組。 這將避免多次命中磁盤以查詢現有文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM