PDA

View Full Version : search کردن یک نوع فایل



elmira_63
دوشنبه 23 دی 1387, 17:35 عصر
سلام دوستان
من می خوام توی برنامم یک نوع فایل را سرچ کرده سپس از اون یک کپی بگیرم برای مثال می خوام هرچی عکس با پسوند .jpg دارم رو سرچ کنم بعد ازشون یک کپی یه جای دیگه از هاردم بگیرم اگه ممکنه راهنماییم کنید اگه با نمونه کد باشه خیلی بهتره

samispeed
دوشنبه 23 دی 1387, 18:20 عصر
برای جستجو ابتدا باید نام درایو و نوع فرمت را مشخص کنید که برای نام درایو از سیستم می خوانید و در
cmb_drive می گذارید و برای نام فرمت اون چیزهایی که مد نظرتون در یک combobox وارد می کنید
و مقدار را در یک listview قرار می دهید


Dim filetype As String = Cmb_filetype.Text نام فرمت
Dim dir_info As New DirectoryInfo(Cmb_drive.Text) نام درایو
ListFiles(ListView1, filetype, dir_info)

تابعی که عمل جستجو را انجام می دهد


Private Sub ListFiles(ByVal lst As ListView, ByVal pattern As String, ByVal dir_info As DirectoryInfo)
Try
Dim fs_infos() As FileInfo = dir_info.GetFiles(pattern)
For Each fs_info As FileInfo In fs_infos
lst.Items.Add(fs_info.Name, 0)
lst.Items(count - 1).SubItems.Add(fs_info.FullName)
count = count + 1
Next fs_info
If ProgressBar1.Value = ProgressBar1.Maximum Then
ProgressBar1.Value = 0
End If
ProgressBar1.PerformStep()
fs_infos = Nothing
Dim subdirs() As DirectoryInfo = dir_info.GetDirectories()
For Each subdir As DirectoryInfo In subdirs
ListFiles(lst, pattern, subdir)
Next subdir
Catch e As Exception
End Try
End Sub

البته می شود با روشهای مختلف جستجو را انجام داد این یکی از روشها می باشد

elmira_63
چهارشنبه 25 دی 1387, 11:22 صبح
ممنون از جوابتون ولی هر کاری کردم به من جواب نداد پروگریزبار پر و خالی می شه آخرشم نصفه کاره میمونه (پروگریزبار) توی لیست ویو هم چیزی نشون نمیده در صورتی که مطمئنم که اون فایل هست :ناراحت:
البته کداتون رو یکم دستکاری کردم آخه وقتی کپی کردم err می گرفت این قسمت هایی که رنگی کردم رو تغییر دادم


Dim filetype As String = ".sln"
Dim dir_info As New DirectoryInfo("f:\")
ListFiles(ListView1, filetype, dir_info)

و اول کار هم اینو اضافه کردم


Imports System.IO

و ایجا هم count رو نمی شناخت شناختوندم


Private Sub ListFiles(ByVal lst As ListView, ByVal pattern As String, ByVal dir_info As DirectoryInfo)
Try
Dim count As Integer
Dim fs_infos() As FileInfo = dir_info.GetFiles(pattern)
For Each fs_info As FileInfo In fs_infos
lst.Items.Add(fs_info.Name, 0)
lst.Items(count - 1).SubItems.Add(fs_info.FullName)
count = count + 1
Next fs_info
If ProgressBar1.Value = ProgressBar1.Maximum Then
ProgressBar1.Value = 0
End If
ProgressBar1.PerformStep()
fs_infos = Nothing
Dim subdirs() As DirectoryInfo = dir_info.GetDirectories()
For Each subdir As DirectoryInfo In subdirs
ListFiles(lst, pattern, subdir)
Next subdir
Catch e As Exception
End Try
End Sub
حالا وقتی اونو اجرا می کنم پروگریز باره برای چند لحظه پر و خالی میشه و یه کارایی می کنه و لیست ویو چیزی توش نمیاد؟؟؟

rooshan2008
چهارشنبه 25 دی 1387, 14:03 عصر
سلام
من قبلاً یه چیزی درست کرده بودم نگاه کن ببین شاید کارت رو راه انداخت

http://barnamenevis.org/forum/showthread.php?t=127838&highlight=%D8%AC%D8%B3%D8%AA%D8%AC%D9%88

elmira_63
چهارشنبه 25 دی 1387, 16:43 عصر
ممنون کارم رو راه انداخت تا حدودی
حالا سوال اول : چیکار کنم که حی این پیغام لطفا نظر بدید نیاد
سوال دوم : چیکار کنم که کل هارد رو search کنه نخوام آدرس بدم؟
سوال سوم : اینایی رو که پیدا کرده چه جوری cut کنم یه جای دیگه past کنم
سوال چهارم : چی کار کنم که نتایج جستجو رو توی لیست ویو پشت سر هم نیاره هر کدوم رو توی یه سطر جداگونه بیاره ؟

ممنون اگه جواب بدید مشکلم کامل حل می شه