PDA

View Full Version : سوال: پیدا کردن فرمت خاص در درایو های مختلف



sohil_ww
چهارشنبه 09 اسفند 1391, 14:20 عصر
من می خوام با استفاده از C#‎‎ فرمتی خاص(برای مثال jpg ) تو تمام درایوا جستجو بشن
اگه کدی هست ممنون میشم راهنمایم کنید.

در واقع همچین دستوری ولی PATH کل درایو ها و فولدرای هارد باشه
string[] jpg = Directory.GetFiles(path1, "*.jpg");

ممنون میشم اگه کسی راهنمایم کنه !

alexmcse
چهارشنبه 09 اسفند 1391, 20:40 عصر
using System;
using System.IO;

class App
{
public static void Main()
{
// Specify the directory you want to manipulate.
string path = @"c:\";
string searchPattern = "c*";//"*.jpg"
//"*.bmp"
//p*.mpg"

DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] directories =
di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly);

FileInfo[] files =
di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);

Console.WriteLine(
"Directories that begin with the letter \"c\" in {0}", path);
foreach (DirectoryInfo dir in directories)
{
Console.WriteLine(
"{0,-25} {1,25}", dir.FullName, dir.LastWriteTime);
}

Console.WriteLine();
Console.WriteLine(
"Files that begin with the letter \"c\" in {0}", path);
foreach (FileInfo file in files)
{
Console.WriteLine(
"{0,-25} {1,25}", file.Name, file.LastWriteTime);
}
} // Main()
} // App()



very good

Mahmoud.Afrad
چهارشنبه 09 اسفند 1391, 20:54 عصر
آرگومان سوم متد GetFiles را تنظیم کنید. البته در حین اجرا ممکنه access denied مواجه بشید.
برای جلوگیری از خطا میتونید از متد زیر استفاده کنید:

private List<string> getFiles(string path, string pattern)
{
List<string> f = new List<string>();
try
{
string[] subDir = Directory.GetDirectories(path);
f = Directory.GetFiles(path, pattern).ToList();
foreach (string dir in subDir)
{
f.AddRange(getFiles(dir, pattern));
}
}
catch
{ }
return f;
}
طریقه استفاده listBox1.DataSource = this.getFiles("c:\\", "*.jpg");

sohil_ww
چهارشنبه 09 اسفند 1391, 21:20 عصر
مرسی ممنون از جوابتون !
ولی من می خوام تمام درایوای ویندوز سرچ بشن نه فقط 1 مسیر یا درایو خاص !

Mahmoud.Afrad
چهارشنبه 09 اسفند 1391, 22:25 عصر
در یک حلقه به ازای هر درایو جستجو رو انجام بدید:

List<string> AllFiles = new List<string>();
foreach (System.IO.DriveInfo drive in System.IO.DriveInfo.GetDrives())
{
AllFiles.AddRange(getFiles(drive.Name, "*.jpg"));
}
listBox1.DataSource = AllFiles;