PDA

View Full Version : سوال: جستجوی فایل بر اساس قسمتی از اسم فایل



shytonak
چهارشنبه 11 اسفند 1389, 14:52 عصر
چطور میشه فایل های موجود در یک فولدر رو بر اساس قسمتی از اسم فایل جستجو کرد؟یعنی وقتی می نویسیم saeed بیاد تمام فایل هایی که تو اسمشون saeed هست رو بگیره.البته با یه پسوند خاص.
منکد زیر رو برای جستجو فایل در یک فولدر نوشتم.اما خوب بقیشو نمیدونم.

try
{
DirectoryInfo dir = new DirectoryInfo(Environment.CurrentDirectory+"\\Data\\");
FileInfo[] filer = dir.GetFiles();
int length = filer.Length;
int i = 0;
while (i != length)
{
i += 1;
string name = filer[i].Name;
if (name.Contains("Saeed.jpg"))
{
MessageBox.Show("Found Saeed");
}
}
}
catch { }

exlord
چهارشنبه 11 اسفند 1389, 16:19 عصر
چرا از while برای حلقه استفاده کردین ؟؟ از اونجایی که طول آرایه مشخصه نیازی به while نیست ... میتونین از for یا foreach استفاده کنین ...

foreach (FileInfo file in filer)
{
if (file.Extension.ToLower() == ".jpg")
{
if(file.Name.Contains("saeed"))
{
//add to list
}
}
}

ali.rezaei7
چهارشنبه 11 اسفند 1389, 16:50 عصر
چطور میشه فایل های موجود در یک فولدر رو بر اساس قسمتی از اسم فایل جستجو کرد؟یعنی وقتی می نویسیم saeed بیاد تمام فایل هایی که تو اسمشون saeed هست رو بگیره.البته با یه پسوند خاص.
منکد زیر رو برای جستجو فایل در یک فولدر نوشتم.اما خوب بقیشو نمیدونم.

try
{
DirectoryInfo dir = new DirectoryInfo(Environment.CurrentDirectory+"\\Data\\");
FileInfo[] filer = dir.GetFiles();
int length = filer.Length;
int i = 0;
while (i != length)
{
i += 1;
string name = filer[i].Name;
if (name.Contains("Saeed.jpg"))
{
MessageBox.Show("Found Saeed");
}
}
}
catch { }

سلام. براي اعمال فيلتر در جستجو نيازي نيست كه شما اين كار رو بصورت دستي انجام بديد. فقط كافيه در تابع GetFiles عبارت محدودكننده قرار رو بديد تا تنها فايل هاي كه با اون عبارت همخوني دارن انتخاب بشن. در كد شما بايد دوتا كاركتر ستاره در ابتدا و انتهاي نام فايل قرارداده بشه تا به نتيجه دلخواهتون برسيد.
DirectoryInfo dir = new DirectoryInfo(Environment.CurrentDirectory + "\\Data \\");
FileInfo[] filer = dir.GetFiles("*Saeed*.jpg");

foreach (FileInfo f in filer)
MessageBox.Show(f.ToString());