نمایش نتایج 1 تا 13 از 13

نام تاپیک: جستجوی سریع فایل

  1. #1

    جستجوی سریع فایل

    سلام چطور میشه مثلا یه فایلی با نام test.php رو با سرعت بالا و بدون کندی سیستم جستجو کرد ?? از thread هم استفاده اما نمیدونم چرا اتفاقی رخ نمیده ؟

  2. #2

    نقل قول: جستجوی سریع فایل

    اگر کدتون جواب نمیده یا کدتون اینجا بزارید یا اصلا سوال نپرسید چون ما نمیتونیم ندیده ، مشکل رو حل کنیم. کد آماده هم ...

  3. #3

    نقل قول: جستجوی سریع فایل

    سلام
    منم این مشکل رو دارم


  4. #4

    نقل قول: جستجوی سریع فایل

    ببینید مشکل این هست که زمانی که میخواد دایرکتوری های یک درایو رو یکی یکی بخونه به دایرکتوری system volume information و recyclebin میرسه پیغام access denied میده!! خیلی جستجو زدم معمولا گفته بودن باید از try catch استفاده کرد اما باز هم جواب نمیده به روش های مختلف این کار رو کردم اما نشده این هم یکی از نمونه هایی هست که تست کردم و جواب نمیده

    foreach (var drive in drives)
    {
    if (drive.IsReady)
    {
    try
    {
    var allFiles = Directory.GetFiles(drive.ToString(), ".*", SearchOption.AllDirectories);
    FileList.Items.Add(allFiles.ToString());
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    }
    }


  5. #5

    نقل قول: جستجوی سریع فایل

    نقل قول نوشته شده توسط qasemf مشاهده تاپیک
    ببینید مشکل این هست که زمانی که میخواد دایرکتوری های یک درایو رو یکی یکی بخونه به دایرکتوری system volume information و recyclebin میرسه پیغام access denied میده!! خیلی جستجو زدم معمولا گفته بودن باید از try catch استفاده کرد اما باز هم جواب نمیده به روش های مختلف این کار رو کردم اما نشده این هم یکی از نمونه هایی هست که تست کردم و جواب نمیده

    foreach (var drive in drives)
    {
    if (drive.IsReady)
    {
    try
    {
    var allFiles = Directory.GetFiles(drive.ToString(), ".*", SearchOption.AllDirectories);
    FileList.Items.Add(allFiles.ToString());
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    }
    }

    اون Exception رو با این UnauthorizedAccessException جایگزین کنید

  6. #6

    نقل قول: جستجوی سریع فایل

    نقل قول نوشته شده توسط qasemf مشاهده تاپیک
    ببینید مشکل این هست که زمانی که میخواد دایرکتوری های یک درایو رو یکی یکی بخونه به دایرکتوری system volume information و recyclebin میرسه پیغام access denied میده!! خیلی جستجو زدم معمولا گفته بودن باید از try catch استفاده کرد اما باز هم جواب نمیده به روش های مختلف این کار رو کردم اما نشده این هم یکی از نمونه هایی هست که تست کردم و جواب نمیده

    foreach (var drive in drives)
    {
    if (drive.IsReady)
    {
    try
    {
    var allFiles = Directory.GetFiles(drive.ToString(), ".*", SearchOption.AllDirectories);
    FileList.Items.Add(allFiles.ToString());
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    }
    }

    یه راه ساده تری هم وجود داره اینکه از لینک استفاده کنید و اگر پوشه سیستمی بود سلکت نکنید من توی یکی از برنامه هام به این صورت استفاده کردم
    foreach (var item in dir.GetDirectories()
    .Where(s => !s.Attributes.HasFlag(FileAttributes.System))
    .Where(s => !s.Attributes.HasFlag(FileAttributes.Hidden))
    {
    Console.WriteLine(item.Name + " Deleted");
    item.Delete(true);
    }


  7. #7

    نقل قول: جستجوی سریع فایل

    نقل قول نوشته شده توسط barnamenevisjavan مشاهده تاپیک
    یه راه ساده تری هم وجود داره اینکه از لینک استفاده کنید و اگر پوشه سیستمی بود سلکت نکنید من توی یکی از برنامه هام به این صورت استفاده کردم
    foreach (var item in dir.GetDirectories()
    .Where(s => !s.Attributes.HasFlag(FileAttributes.System))
    .Where(s => !s.Attributes.HasFlag(FileAttributes.Hidden))
    {
    Console.WriteLine(item.Name + " Deleted");
    item.Delete(true);
    }


    ببینید چون بحث سرعت هم مطرح هست من اومدم به این روش عمل کردم و از parallel استفاده کردم واسه همین الان این شرطی که شما گفتین رو نمیتونم پیادش کنم


    private void WalkDirectoryTree(DirectoryInfo dr, string searchname)

    {

    System.IO.FileInfo[] files = null;
    System.IO.DirectoryInfo[] subDirs = null;
    try
    {
    files = dr.GetFiles(searchname + ".*");
    if (files != null)
    {
    if (InvokeRequired)
    {
    Invoke((MethodInvoker)delegate () {

    foreach (FileInfo fi in dr.GetFiles(searchname + ".*")
    .Where(f => !f.Attributes.HasFlag(FileAttributes.System))
    .Where(s => !s.Attributes.HasFlag(FileAttributes.Hidden)))


    {
    flowLayoutPanel2.Controls.Clear();
    listview_Control.Filelist.Items.Add(fi.Name);
    flowLayoutPanel2.Controls.Add(listview_Control);

    // allFiles.Add(fi);
    }
    });
    }

    subDirs = dr.GetDirectories();

    Parallel.ForEach(subDirs, dwr => WalkDirectoryTree(dwr, searchname)


    );
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }


    }

  8. #8

    نقل قول: جستجوی سریع فایل

    نقل قول نوشته شده توسط qasemf مشاهده تاپیک
    ببینید چون بحث سرعت هم مطرح هست من اومدم به این روش عمل کردم و از parallel استفاده کردم واسه همین الان این شرطی که شما گفتین رو نمیتونم پیادش کنم


    private void WalkDirectoryTree(DirectoryInfo dr, string searchname)

    {

    System.IO.FileInfo[] files = null;
    System.IO.DirectoryInfo[] subDirs = null;
    try
    {
    files = dr.GetFiles(searchname + ".*");
    if (files != null)
    {
    if (InvokeRequired)
    {
    Invoke((MethodInvoker)delegate () {

    foreach (FileInfo fi in dr.GetFiles(searchname + ".*")
    .Where(f => !f.Attributes.HasFlag(FileAttributes.System))
    .Where(s => !s.Attributes.HasFlag(FileAttributes.Hidden)))


    {
    flowLayoutPanel2.Controls.Clear();
    listview_Control.Filelist.Items.Add(fi.Name);
    flowLayoutPanel2.Controls.Add(listview_Control);

    // allFiles.Add(fi);
    }
    });
    }

    subDirs = dr.GetDirectories();

    Parallel.ForEach(subDirs, dwr => WalkDirectoryTree(dwr, searchname)


    );
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }


    }
    شما شرط رو روی فایل گذاشتید، باید روی دایرکتوری قرار بدید
    var subDirs = dr.GetDirectories()
    .Where(f => !f.Attributes.HasFlag(FileAttributes.System))
    .Where(s => !s.Attributes.HasFlag(FileAttributes.Hidden));

  9. #9

    نقل قول: جستجوی سریع فایل

    روالی با پردازش موازی کارکرد سریعتری داره که اجرای همزمانش عملی باشه و تداخلی ایجاد نکنه.
    درخواست جستجوی سیستم فایل اگه شبیه جستجو در یک لیست بود، با تقسیم کردن لیست به چند قسمت و جستجوی موازی هر قسمت طبعا سریعتر میشد، اما همچین روالی نداره.
    زمانی که داده درایو در حافظه RAM بافر شد میشه پردازش موازی انجام داد برای همینه که جستجوی بار دوم خیلی سریعتر از دفعه اول انجام میشه، ولی دیگه تا این داده ها بافر بشه زمان زیادی سپری شده.
    رابط خوندن و نوشتن درایو مشترک ئه، در حین خوندن بخشی از سیستم فایل از درایو نمیتونه همزمان بخش دیگری رو بخونه. حتی اگه درایو روی دیسک مکانیکی باشه که دیگه بدتر هد مدام باید بین دو بخش جابجا بشه و بجای اینکه در مجموع سریعتر بشه عملا کندتر میشه.
    برای همین موقعی که سیستم عامل داره از یک درایو داده میخونه یا می نویسه هر پردازش دیگری که با اون درایو سر و کار داره کند میشه، چه درخواست با نخ مجزا باشه و چه برنامه دیگری.

  10. #10

    نقل قول: جستجوی سریع فایل

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    روالی با پردازش موازی کارکرد سریعتری داره که اجرای همزمانش عملی باشه و تداخلی ایجاد نکنه.
    درخواست جستجوی سیستم فایل اگه شبیه جستجو در یک لیست بود، با تقسیم کردن لیست به چند قسمت و جستجوی موازی هر قسمت طبعا سریعتر میشد، اما همچین روالی نداره.
    زمانی که داده درایو در حافظه RAM بافر شد میشه پردازش موازی انجام داد برای همینه که جستجوی بار دوم خیلی سریعتر از دفعه اول انجام میشه، ولی دیگه تا این داده ها بافر بشه زمان زیادی سپری شده.
    رابط خوندن و نوشتن درایو مشترک ئه، در حین خوندن بخشی از سیستم فایل از درایو نمیتونه همزمان بخش دیگری رو بخونه. حتی اگه درایو روی دیسک مکانیکی باشه که دیگه بدتر هد مدام باید بین دو بخش جابجا بشه و بجای اینکه در مجموع سریعتر بشه عملا کندتر میشه.
    برای همین موقعی که سیستم عامل داره از یک درایو داده میخونه یا می نویسه هر پردازش دیگری که با اون درایو سر و کار داره کند میشه، چه درخواست با نخ مجزا باشه و چه برنامه دیگری.

    مهندس ممنونم از نظرتون...
    فکر میکنین راه حل چیه؟ الان با کمک دوست عزیز barnamenevisjavan مشکل عدم دسترسی حل شد اما کماکان برنامه کند عمل میکنه و نتیجه ای هم نداره!!! میشه زمانی که جستجو میخواد اتفاق بیافته از thread استفاده کرد؟ اخه چند جا خوندم که میگفتن از thread باید استفاده کرد.هرچند باز هم نتیجه نگرفتم...
    barnamenevisjavan شما هم نظری در این رابطه دارین؟

  11. #11
    کاربر دائمی آواتار daniyaltjm
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    AHvaz
    پست
    352

    نقل قول: جستجوی سریع فایل

    برای جستجوی سریع در هارد، خود شرکت مایکروسافت هم از ایندکس استفاده میکنه دیگه راهی نیست مگه اینکه از ssd استفاده کنید.

  12. #12

    نقل قول: جستجوی سریع فایل

    نقل قول نوشته شده توسط qasemf مشاهده تاپیک
    مهندس ممنونم از نظرتون...
    فکر میکنین راه حل چیه؟ الان با کمک دوست عزیز barnamenevisjavan مشکل عدم دسترسی حل شد اما کماکان برنامه کند عمل میکنه و نتیجه ای هم نداره!!! میشه زمانی که جستجو میخواد اتفاق بیافته از thread استفاده کرد؟ اخه چند جا خوندم که میگفتن از thread باید استفاده کرد.هرچند باز هم نتیجه نگرفتم...
    barnamenevisjavan شما هم نظری در این رابطه دارین؟
    من زیاد از کد شما متوجه نشدم که دارید چیکار میکنید ولی من با کد زیر تمام فایل های یک پوشه (که شامل پوشه های تو در تو هست) رو پیدا میکنم 4000 فایل رو توی 2 ثانیه برمیگردونه
    public static IEnumerable<string> EnumerateManifest(string rootDirectory)
    {
    foreach (var directory in Directory.GetDirectories(
    rootDirectory,
    "*",
    SearchOption.AllDirectories))
    {
    foreach (var file in Directory.GetFiles(directory))
    {
    yield return file;
    }
    }
    }


    اینم همون متده فقط با پارالل
    //public static IEnumerable<string> EnumerateManifest(string rootDirectory)
    //{
    // var result = new BlockingCollection<string>();

    // var files = Directory.EnumerateFiles(rootDirectory, "*", SearchOption.AllDirectories);
    // Parallel.ForEach(files, (file) =>
    // {
    // result.Add(file);
    // });
    // return result;
    //}


  13. #13

    نقل قول: جستجوی سریع فایل

    خیلی جالبه Capthhhure.PNG
    باز هم خطای عدم دسترسی میده

تاپیک های مشابه

  1. دابل کلیک برای فایل آماده شده جستجوی سریع
    نوشته شده توسط salambeshoma در بخش Access
    پاسخ: 3
    آخرین پست: چهارشنبه 04 دی 1392, 00:41 صبح
  2. جستجوی سریع تر ...
    نوشته شده توسط کامروا در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: پنج شنبه 09 شهریور 1391, 15:22 عصر
  3. جستجوی سریع
    نوشته شده توسط رضا قربانی در بخش PHP
    پاسخ: 5
    آخرین پست: شنبه 07 آبان 1390, 00:46 صبح
  4. جستجوی سریع
    نوشته شده توسط رهنورد2 در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: دوشنبه 03 مهر 1385, 09:55 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •