Tôi đang viết một máy quét thư mục trong .NET.Có cách nào nhanh hơn để quét qua thư mục đệ quy trong .NET không?
Đối với mỗi Tệp/Dir, tôi cần thông tin sau.
class Info {
public bool IsDirectory;
public string Path;
public DateTime ModifiedDate;
public DateTime CreatedDate;
}
tôi có chức năng này:
static List<Info> RecursiveMovieFolderScan(string path){
var info = new List<Info>();
var dirInfo = new DirectoryInfo(path);
foreach (var dir in dirInfo.GetDirectories()) {
info.Add(new Info() {
IsDirectory = true,
CreatedDate = dir.CreationTimeUtc,
ModifiedDate = dir.LastWriteTimeUtc,
Path = dir.FullName
});
info.AddRange(RecursiveMovieFolderScan(dir.FullName));
}
foreach (var file in dirInfo.GetFiles()) {
info.Add(new Info()
{
IsDirectory = false,
CreatedDate = file.CreationTimeUtc,
ModifiedDate = file.LastWriteTimeUtc,
Path = file.FullName
});
}
return info;
}
Hóa ra thực hiện điều này là khá chậm. Có cách nào để tăng tốc độ này không? Tôi đang nghĩ đến việc viết mã bằng tay với FindFirstFileW nhưng muốn tránh điều đó nếu có một cách được xây dựng theo cách nhanh hơn.
Bạn đang tìm kiếm bao nhiêu tệp/thư mục? Độ sâu đệ quy là gì? –
Nó khá nông, 371 dirs với trung bình 10 tập tin trong mỗi thư mục. một số dir có chứa các thư mục con khác –
Có vẻ như P/Invoke là người chiến thắng ở đây. Nếu bạn vẫn cần thêm chuỗi công nhân tốc độ có thể giúp đỡ. –