Is there an async version of DirectoryInfo.GetFiles / Directory.GetDirectories in dotNet?

前端 未结 7 2141
北荒
北荒 2020-12-08 06:50

Is there an asynchronous version of DirectoryInfo.GetFiles / Directory.GetDirectories in dotNet? I\'d like to use them in an F# async block, and it\'d be nice to have a ver

7条回答
  •  臣服心动
    2020-12-08 07:12

    I am no F# programmer, but I'd do this in C#:

    static IEnumerable IterateFiles(string path, string pattern) {
        var entryQueue = new Queue();
        entryQueue.Enqueue(path);
    
        while (entryQueue.Count > 0) {
            var subdirs = Directory.GetDirectories(entryQueue.Peek());
            var files = Directory.GetFiles(entryQueue.Peek(), pattern, SearchOption.TopDirectoryOnly);
            foreach (var file in files)
                yield return file;
            entryQueue.Dequeue();
    
            foreach(var subdir in subdirs)
                entryQueue.Enqueue(subdir);
        }
    }
    

    I'm assuming there's a similar construct to iterators in F#.

提交回复
热议问题