PDA

View Full Version : چگونه میتوان یک درایو را پیمایش کرد



alexmcse
سه شنبه 20 آذر 1397, 19:57 عصر
سلام
مثلا من نام درایو دی را بدهم و برنامه تمام فولدر ها و فایلهای درایو دی را نشان دهد(پیمایش کند)
تشکر

mrbm_2007
سه شنبه 20 آذر 1397, 23:28 عصر
این یه نمونه کد هست که من قبلا خودم استفاده کردم
ورودی های تابع:
root: آدرس پوشه (یا درایو) ریشه که محتواش مورد نظر هست
pattern: الگوی جستجو (برای اینکه همه رو بگرده می تونید "*" استفاده کنید)
size: حجم کل فایل های پیمایش شده رو بر می گردونه (که اگر لازم ندارید می تونید حذف اش کنید)
sublevels: تعداد زیر پوشه های مورد نیاز برای پیمایش (یعنی تا چند مرحله داخل زیر پوشه ها بره)

خروجی تابع:
یک رشته با ساختار تورفتگی برای لیست همه فایل ها و پوشه های پیمایش شده


using System;
using System.IO;

static string MyDir(string root, string pattern, out long size, int sublevels, int level = 0)
{
var res = "";
size = 0;
var D = Directory.GetDirectories(root, "*", SearchOption.TopDirectoryOnly);
var F = Directory.GetFiles(root, pattern, SearchOption.TopDirectoryOnly);
foreach (var d in D)
try
{
var res_ = "";
long size_ = 0;
if (sublevels > 1)
res_ = MyDir(d, pattern, out size_, sublevels - 1, level + 1);
size += size_;
res += ("[" + (size_ / (1024 * 1024.0)).ToString("0.00") + "] ").PadRight(13) + "".PadRight(level * 4) + "".PadRight((level + 1), '>') + Path.GetFileName(d);
res += "\r\n" + res_;
}
catch { }
foreach (var f3 in F)
{
var size_ = new FileInfo(f3).Length;
size += size_;
res += ("{" + (size_ / (1024 * 1024.0)).ToString("0.00") + "} ").PadRight(13) + "".PadRight(level * 4) + Path.GetFileName(f3) + "\r\n";
}
return res;
}