C# 递归搜索根文件夹中的文件时,请参见当前文件夹

C# 递归搜索根文件夹中的文件时,请参见当前文件夹,c#,winforms,C#,Winforms,在将这些文件添加到我的列表框之前,我用它来选择一个根文件夹并从每个目录中获取最新的文件,我想知道是否有办法知道当前目录,以便在我仍在搜索文件时更新我的UI var rootDirFile = Directory .EnumerateFiles(pathToSearch, "*.pcap", SearchOption.TopDirectoryOnly) .OrderByDescending(f =>

在将这些文件添加到我的
列表框
之前,我用它来选择一个根文件夹并从每个目录中获取最新的文件,我想知道是否有办法知道当前目录,以便在我仍在搜索文件时更新我的UI

var rootDirFile = Directory
                        .EnumerateFiles(pathToSearch, "*.pcap", SearchOption.TopDirectoryOnly)
                        .OrderByDescending(f => File.GetCreationTime(f))
                        .Take(1);

                    var allNewestFilesOfEachFolder = Directory
                        .EnumerateDirectories(pathToSearch, "*.*", SearchOption.AllDirectories)
                        .Select(d => Directory.EnumerateFiles(d, "*.pcap")
                            .OrderByDescending(f => File.GetCreationTime(f))
                            .FirstOrDefault());

foreach (string tempFile in rootDirFile.Concat(allNewestFilesOfEachFolder))
{
   //add the file
}

通过将
WorkerSupportsProgress
属性设置为
true
,然后处理
ReportProgress
事件,可能最容易调用代码。我希望下面的代码有助于解决您的问题

// Observable collection is the best choice to bind to the UI elements it automatically refreshes the changes in the UT whenever the data modifies. 

    ObservableCollection<string> objList = new ObservableCollection<string>();

          //Bind this ObservableCollection to the UI Element with TwoWay binding

          var rootDirFile = Directory.EnumerateFiles(pathToSearch, "*.pcap", SearchOption.TopDirectoryOnly).OrderByDescending(f => File.GetCreationTime(f)).Take(1);
           // add to the observable collection

          var allNewestFilesOfEachFolder = Directory
                        .EnumerateDirectories(pathToSearch, "*.*", SearchOption.AllDirectories);

           // Instead of Iterating the Directory in a single time, seperate the task and iterate folder by folder basis.

            foreach (string obj  in allNewestFilesOfEachFolder )
            {
                var dir = Directory
                        .EnumerateFiles(obj, "*.pcap", SearchOption.TopDirectoryOnly)
                        .OrderByDescending(f => File.GetCreationTime(f))
                        .Take(1);    

                // add to the observable collection , it will automatically reflects the changes in the UI            

            }
//Observable collection是绑定到UI元素的最佳选择,它会在数据修改时自动刷新UT中的更改。
ObservableCollection objList=新的ObservableCollection();
//使用双向绑定将此ObservableCollection绑定到UI元素
var rootDirFile=Directory.EnumerateFiles(pathToSearch,“*.pcap”,SearchOption.TopDirectoryOnly).OrderByDescending(f=>File.GetCreationTime(f)).Take(1);
//添加到可观察集合
var allNewestFilesOfEachFolder=目录
.EnumerateDirectory(路径搜索,“**”,搜索选项.AllDirectories);
//不要一次迭代目录,而是将任务和迭代文件夹分开。
foreach(allNewestFilesOfEachFolder中的字符串obj)
{
var dir=目录
.EnumerateFiles(obj,“*.pcap”,SearchOption.TopDirectoryOnly)
.OrderByDescending(f=>File.GetCreationTime(f))
.采取(1)项措施;
//添加到可观察集合中,它将自动反映UI中的更改
}

如果您还需要绑定代码,请告诉我。我会简单解释一下

我能举个例子吗?(我是一名新开发人员…)我不明白这段代码是做什么的,你能解释一下(我是一名新开发人员)你想在哪里显示收集结果,UI组件的方式吗?请学习msdn中的绑定和ObservableCollection。那么,你对这篇文章有了更好的了解。我想看看我标签上的收集结果