PDA

View Full Version : تعداد کل فایلها و فولدرهای یک فولدر



vb_nima
چهارشنبه 29 فروردین 1386, 14:32 عصر
با سلام.
چطوری میتونم تعداد فایلها و فولدرهای یک فولدر را پیدا کنم مثل همون کاری که در propertis هر فولدر در my computer وجود داره.
برای یک درایو چطور؟؟

Payman62
چهارشنبه 29 فروردین 1386, 15:16 عصر
از دستور dir داس استفاده کن.

CodeMasterX
چهارشنبه 29 فروردین 1386, 15:42 عصر
بعدا اگر خواستی بگو تا همین جا برات یه ضمیمه آپلود کنم که فایل ها و فولدر ها رو جستجو می کنه و تمام مشخصالت فولدر ها و فایل ها رو میده.ولی فعلا جواب سوالت اینه که فقط فولدر ها جستجو بشن.
اول از همه به منوی Project|References برو و کتابخانه Microsoft Scripting Runtime رو به پروژه اضافه کن.بعد این کد رو توی قسمت General فرمت بنویس:



Dim FS As New FileSystemObject
Dim mFolder As Folder
Dim mSubFolder As Folder
Dim mSubFolders As Folder
Dim mCollection As New Collection
Dim lCount As Long


FS آبجکت اصلی برای کار با فایل ها و فولدر هات هست.
mFolder فولدر مادر یا Parent رو میگیره و mSubFolder فولدر های زیرین اون و همچنین mSubFolders فولدر های درون mSubFolder رو ذخیره می کنن.
mCollection یه مجموعه برای ذخیره مسیر فولدر های پیدا شده هست و lCount هم تعداد فولدر ها رو شمارش می کنه.
حالا یه TextBox به اسم txtSource و یه دکمه به اسم cmdBrowse و یه دکمه به اسم cmdStart و یه ListBox به اسم List1 به فرمت اضافه کن.

این کد رو تو یه ماژول بنویس:



Option Explicit

'SHBrowse Dialog
'======================================
Public Const BIF_RETURNONLYFSDIRS = 1
Public Const BIF_DONTGOBELOWDOMAIN = 2
Public Const BIF_BROWSEFORCOMPUTER = &H1000

Public Const MAX_PATH = 260

Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long

Public Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type

Public Function SHBrowseDialog(ByVal Title As String, ByVal Form As Form) As String
Dim lpIDList As Long
Dim sBuffer As String
Dim szTitle As String
Dim tBrowseInfo As BrowseInfo

szTitle = Title

With tBrowseInfo
.hwndOwner = Form.hWnd
.lpszTitle = lstrcat(szTitle, "")
.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With
lpIDList = SHBrowseForFolder(tBrowseInfo)


If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
SHBrowseDialog = sBuffer
End If

End Function


این تابع کارش مشخصه نیازی به توضیح نداره.حالا توی رویداد Click مربوط به cmdBrowse این کد رو بنویس:



me.txtSource.Text = SHBrowseDialog("Select Source Folder" , Me)


و این کد رو هم در رویداد Click مربوط به cmdStart بنویس:



List1.Clear
Me.MousePointer = vbHourglass

Set mFolder = FS.GetFolder(Me.txtSource.Text & "\")
For Each mSubFolder In mFolder.SubFolders
mCollection.Add mSubFolder.Path
lCount = lCount + 1
For Each mSubFolders In mSubFolder.SubFolders
mCollection.Add mSubFolders.Path
lCount = lCount + 1
Next
Next

Me.MousePointer = vbDefault

Me.Caption = "[" & lCount & "] Folders Found so far"
For lCount = 1 To mCollection.Count
Me.List1.AddItem mCollection(lCount)
Next lCount


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

CodeMasterX
چهارشنبه 29 فروردین 1386, 15:44 عصر
از دستور dir داس استفاده کن.

دسوتر Dir فقط نشون میده که یک فایل یا فولدر در مسیر داده شده وجود داره یه نه همین!



If Dir (App.Path & "\Database.mdb") = "" Then
MsgBox "Couldnt find database file!" , vbCritical
End If

mehran8
چهارشنبه 29 فروردین 1386, 16:07 عصر
دستت درد نکنه
ولی کاش یه توضیحی در مورد کد ها می دادی ..
آخه می دونی این جوری برنامه نویسی کردن اصلاً فایده نداره منظورم اینه که فقط برداریم کد ها رو کپی کنیم . باورت می شه همه کد های خفنی رو که نوشتم همه رو کپی کردم .
(به استثناء اونایی که نیاز به فکر کردن داشتن) . یعنی همه رو ها ! البته باز هم خوبیش به این بود که می فهمیدمشون .

CodeMasterX
چهارشنبه 29 فروردین 1386, 16:37 عصر
والا اون تابع SHBrowseDialog که ساده هست.یه تابع API هست.
اون کد دکمه Start هم که آسونه.ببنی خط اول میاد و هندل یک فولدر رو به mFolder میده:



Set mFolder = FS.GetFolder (txtSource.Text & "\")


بعد با تو تا حلقه تو در تو لیست فولدر ها رو میگیریم و مسیرشون رو در یک Collection میریزیم و هر بار یک واحد هم به متغیر lCount اضافه می کنیم.



For Each mSubFolder In mFolder.SubFolders
mCollection.Add mSubFolder.Path
lCount = lCount + 1
Next


اون حلقه دوم هم دقیقا همین هست منتها فولدر های درون فولدر اصلی رو نمیگیره بلکه فولدرهای درون فولدرهای زیرین شاخه اصلی رو میگیره:



For Each mSubFolders In mSubFolder.SubFolder
mCollection.Add mSubFolders.Path
lCount = lCount + 1
Next


در آخر هم با استفاده از یه حلقه ساده تمام آیتم های درون Collection رو تو یه لیست میریزیم:



For lCount = 1 To mCollection.Count
Me.List1.AddItem mCollection (lCount)
Next lCount


دیگه نمیدونم چجوری توضیح بدم برنامه ساده است.

__H2__
چهارشنبه 29 فروردین 1386, 17:26 عصر
دسوتر Dir فقط نشون میده که یک فایل یا فولدر در مسیر داده شده وجود داره یه نه همین!



If Dir (App.Path & "\Database.mdb") = "" Then
MsgBox "Couldnt find database file!" , vbCritical
End If


سلام
دوست عزیز، اینطور نیست !
تابع Dir میتواند تمام فایلهای داخل یک دایرکتوری را بدست آورد فقط کافی است بدون آرگومان صدا زده شود (اصلاَ برای همین اولین پارامتر آن اختیاری است وگرنه مگر میشود بدون دادن نام جواب دهد)
همین چند خط کد ناقابل: (البته روش API شما هم جای خودش!)


Dim f As String
f = Dir$("C:\*.*")
Do Until f = ""
Me.Print f
f = Dir$()
Loop


این از آن امکانات کمتر گفته شده Dir است

vb_nima
چهارشنبه 29 فروردین 1386, 17:56 عصر
سلام
دوست عزیز، اینطور نیست !
تابع Dir میتواند تمام فایلهای داخل یک دایرکتوری را بدست آورد فقط کافی است بدون آرگومان صدا زده شود (اصلاَ برای همین اولین پارامتر آن اختیاری است وگرنه مگر میشود بدون دادن نام جواب دهد)
همین چند خط کد ناقابل: (البته روش API شما هم جای خودش!)


Dim f As String
f = Dir$("C:\*.*")
Do Until f = ""
Me.Print f
f = Dir$()
Loop


این از آن امکانات کمتر گفته شده Dir است

من این کد را اجرا کردم ولی فقط فایلهای همون فولدر را نشون میده نه زیر فولدراش را.
منظورم من کل فایلها بود.
شاید هم من اشتباه اجرا کردم.

vb_nima
چهارشنبه 29 فروردین 1386, 18:02 عصر
آقای CodeMaserX این تابع چه کار میکنه ؟SHBrowseDialog
ما که لیست را با دو تا حلقه به دست آوردیم.

الگوریتم استفاده شده برای پیداکردن تمام زیر فولدر ها خیلی برام جالبه. خیلی آسونه.
من خودم از تابع بازگشتی استفاده می کردم .بعنی از داخل تابع خود تابع را صدا میکردم و همین طور فولدرها را رو به جلو می رفتم .مثل همونکاری که در پیمایش درخت در ساختمان داده ها انجام میدند.

romina2006
چهارشنبه 29 فروردین 1386, 18:44 عصر
می تونی از کدهای زیر استفاده کنی


Private Sub Command1_Click()
Call Shell(Environ("windir") & "\system32\cmd.exe /c dir/s " & Environ("windir") & "\*.* >c:\test.txt", vbHide)
End Sub
Private Sub Command2_Click()
Call Shell(Environ("windir") & "\system32\cmd.exe /c dir/s/b " & Environ("windir") & "\*.* >c:\test.txt", vbHide)
End Sub


کدهای فوق تمام فولدرها و فایلهای پوشه ویندوز را در یک فایل ذخیره می کند

CodeMasterX
چهارشنبه 29 فروردین 1386, 18:51 عصر
خواهش می کنم.
اولا که در مورد اون تابع Dir باید بگم که من هم میدونم که اینجوری میشه استفادش کرد ولی دوست عزیزمون گفته بود تمام زیر فولدر ها و فایل ها رو هم میخواد.
ثانیا من از API استفاده نکردم! فقط آبجکت FileSystem بود.
بعد از اون هم اینکه اون تابع SHBrowseDialog یه پنجره رو نشون میده که باهاش یه فولدر رو انتخاب میکنی و مقدار برگشتی آدس فولدر هست.

یه ضمیمه از نسخه حرفه ای تر این برنامه رو براتون میذارم،کدش رو اگه میخواستم بنویسم خیلی میشد.منتظر نسخه های بعدی هم باشید!

romina2006
چهارشنبه 29 فروردین 1386, 18:58 عصر
اون کدی که گذاشتم تمام زیر فولدرها و فایلهای موردنظر را نشان می دهد

CodeMasterX
چهارشنبه 29 فروردین 1386, 19:37 عصر
می تونی از کدهای زیر استفاده کنی


Private Sub Command1_Click()
Call Shell(Environ("windir") & "\system32\cmd.exe /c dir/s " & Environ("windir") & "\*.* >c:\test.txt", vbHide)
End Sub
Private Sub Command2_Click()
Call Shell(Environ("windir") & "\system32\cmd.exe /c dir/s/b " & Environ("windir") & "\*.* >c:\test.txt", vbHide)
End Sub
کدهای فوق تمام فولدرها و فایلهای پوشه ویندوز را در یک فایل ذخیره می کند

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

vb_nima
چهارشنبه 29 فروردین 1386, 20:53 عصر
آقای CodeMasterX نمی دونم اشتباه متوجه شدم یا نه.
ولی اینطور که از برنامه شما برمی آید این برنامه تا سه سطح از فولدرها را بیشتر نمی تواند پیمایش کند؟البته من اول شک داشتم ولی در اجرا هم همین را دیدم.
در ضمن من تعداد فایلهای هر پوشه را خیلی سریع باید به دست بیارم این برنامه کلی زمان میگیره.
پس خود ویندوز به نظر دوستان چطوری اینقدر سریع اینکار را میکنه؟؟؟؟؟؟؟

CodeMasterX
چهارشنبه 29 فروردین 1386, 22:58 عصر
اولا که این برنامه مشکلی نداره و تست شده و تمام زیر فولدر های یک فولدر رو بر می گردونه.شاید شما فولدر هاتون مخفی هست یا.....
دوما برای سرعتی بالاتر مثل ویندوز نمیتونید از آبجکت FileSystem استفاده کنید و باید از توابع API کمک بگیرید.

ابتدا کد زیر رو تو قسمت General فرم اضافه کنید:



Private Const MAX_PATH = 260
Private Const MAXDWORD = &HFFFF
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long


همچنین این کد ها رو هم به قسمت General فرم اضافه کنید:



Function FindFilesAPI(path As String, SearchStr As String, FileCount As Integer, DirCount As Integer)
Dim FileName As String
Dim DirName As String
Dim dirNames() As String
Dim nDir As Integer
Dim i As Integer
Dim hSearch As Long
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
If Right(path, 1) <> "\" Then path = path & "\"
nDir = 0
ReDim dirNames(nDir)
Cont = True
hSearch = FindFirstFile(path & "*", WFD)
If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont
DirName = StripNulls(WFD.cFileName)
If (DirName <> ".") And (DirName <> "..") Then
If GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then
dirNames(nDir) = DirName
DirCount = DirCount + 1
nDir = nDir + 1
ReDim Preserve dirNames(nDir)
End If
End If
Cont = FindNextFile(hSearch, WFD)
Loop
Cont = FindClose(hSearch)
End If
hSearch = FindFirstFile(path & SearchStr, WFD)
Cont = True
If hSearch <> INVALID_HANDLE_VALUE Then
While Cont
FileName = StripNulls(WFD.cFileName)
If (FileName <> ".") And (FileName <> "..") Then
FindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow
FileCount = FileCount + 1
List1.AddItem path & FileName
End If
Cont = FindNextFile(hSearch, WFD)
Wend
Cont = FindClose(hSearch)
End If
If nDir > 0 Then
For i = 0 To nDir - 1
FindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(i) & "\", SearchStr, FileCount, DirCount)
Next i
End If
End Function


و این یکی:



Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, Chr(0)) > 0) Then
OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
End If
StripNulls = OriginalStr
End Function


حالا 4 تا تکست باکس و یک لیست باکس به فرم اضافه کنید و نام های پیش فرضشون رو تغییر ندین.حالا یه دکمه به نام Command1 اضافه کنید و کد زیر رو برای روال Click ش بنویسید:



Sub Command1_Click()
Dim SearchPath As String, FindStr As String
Dim FileSize As Long
Dim NumFiles As Integer, NumDirs As Integer

Screen.MousePointer = vbHourglass
List1.Clear
SearchPath = Text1.Text
FindStr = Text2.Text
FileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs)
Text3.Text = NumFiles & " Files found in " & NumDirs + 1 & " Directories"
Text4.Text = "Size of files found under " & SearchPath & " = " & Format(FileSize, "#,###,###,##0") & " Bytes"
Screen.MousePointer = vbDefault
End Sub


توابع و متغیر ها و تعاریف رو جدا نوشتم تا اشتباه نشه.این توابع API فایل های مورد نظر رو در مسیر داده شده جستجو می کنه و در تمام زیر شاخه ها هم جستجو می کنه و فایل های مخفی رو هم در نظر میگیره.خود ویندوز با این توابع کار می کنه.
دقت کنید که Text1,Text2 به ترتیب برای مقدار دهی مسیر جستجو و نام فایل مورد نظر هستن و Text3,Text4 به ترتیب نتایج رو اعلام میکنن.

برای مثال وقتی برنامه اجرا شد توی Text1 بنویسید


C:\Photos\

و در Text2 بنویسید:


*.jpg


حله ؟! :لبخند:

romina2006
پنج شنبه 30 فروردین 1386, 01:57 صبح
منظورت اینه دیگه نه ؟
ولی ما میخوایم با اطلاعات به دست اومده در رنامه کار کنیم.حالا هر کاری چه با فایل ها و چه با فولدر ها.پس کد شما اینجا کاربردی نداره چون اطلاعات رو توی فایل ذخیره می کنه،یعنی منظورت اینه که اول داده ها رو ذخیره کنیم،بعد از اون فایل لخونیم و اطلاعات رو تو برنامه بریزیم ؟
نه! نمیشه.

اون کد رو من برای این نوشتم که شما گفتید دستور Dir فقط نشون میده که یک فایل یا فولدر در مسیر داده شده وجود داره یا نه همین!


Private Sub Command1_Click()
If Text1.Text = "" Then
Text1.SetFocus
Exit Sub
End If
Path = ("""""""" & Text1.Text & """""""")
Call Shell(Environ("windir") & "\system32\cmd.exe /c dir /s/b/a " & Path & "\*.* > c:\test.txt", vbHide)
End Sub
Private Sub Command2_Click()
On Error Resume Next
Open "c:\test.txt" For Input As #1
If EOF(1) Then
Input #1, a
List1.List(i) = a
End If
While Not EOF(1)
Input #1, a
List1.List(i) = a
i = i + 1
Wend
DoEvents
Close #1
End Sub


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

vb_nima
پنج شنبه 30 فروردین 1386, 01:59 صبح
[QUOTE=CodeMasterX;329369]اولا که این برنامه مشکلی نداره و تست شده و تمام زیر فولدر های یک فولدر رو بر می گردونه.شاید شما فولدر هاتون مخفی هست یا.....

1) ببخشید منظورتون از "یا ..." چی بود؟ من امتحان کردم و اون حرف را زدم .تصاویر زیر را ببینید.تا متوجه شوید.یکی در my computer و دیگری در برنامه است.
پوشه D:\1 را جستجو (پیمایش) شده .
http://www.barnamenevis.org/forum/attachment.php?attachmentid=7975&stc=1&d=1176933343

http://www.barnamenevis.org/forum/attachment.php?attachmentid=7976&stc=1&d=1176933343

2) به خاطر به برنامه جدید ممنون .خسته نباشی.

__H2__
پنج شنبه 30 فروردین 1386, 12:38 عصر
خواهش می کنم.
اولا که در مورد اون تابع Dir باید بگم که من هم میدونم که اینجوری میشه استفادش کرد ولی دوست عزیزمون گفته بود تمام زیر فولدر ها و فایل ها رو هم میخواد.
ثانیا من از API استفاده نکردم! فقط آبجکت FileSystem بود.
بعد از اون هم اینکه اون تابع SHBrowseDialog یه پنجره رو نشون میده که باهاش یه فولدر رو انتخاب میکنی و مقدار برگشتی آدس فولدر هست.


دوست عزیز، با تایین پارامتر دوم میشود لیست پوشه ها را هم به دست آورد. مثلاَ


Private Sub Form_Load()
Me.AutoRedraw = True
Call PrintFolder("C:\Windows\Web\")
End Sub
Public Sub PrintFolder(folder As String)
On Error Resume Next
If Right$(folder, 1) <> "\" Then folder = folder & "\"

Dim f As String
f = Dir$(folder & "*", vbDirectory Or vbHidden)

Do Until f = ""
If f <> "." And f <> ".." Then
f = folder & f

If (GetAttr(f) And vbDirectory) > 0 Then
Print "Folder: " & f
Call PrintFolder(f)
Else
Print "File: " & f
End If

End If
f = Dir$()
If Err.Number > 0 Then f = "": Err.Clear
Loop
End Sub


البته من تعصبی روی این روش ندارم، فقط میخواستم بگم که با دستور داخلی Dir هم میتوان اینکار را انجام داد.

ضمنا در مورد API که گفته بودم میبخشید، یک کم به تندخوانی اعتیاد دارم! و تا در جواب شما دستور Declare را دیدم فوراَ نتیجه گرفتم که کل کار را با API انجام داده اید. سعی میکنم ترک کنم! ببخشید.

CodeMasterX
پنج شنبه 30 فروردین 1386, 13:26 عصر
به هر حال من برنامه اولم رو وقتی تست می کنم تمام زیر فولدر ها رو بهم نشون میده.
نمیدونم مشکل برای شما کجاست ؟
ولی اون توابع API رو استفاد کنید بهتره.هم سرعتش بیشتره هم به قول شما تمام زیر شاخه ها رو هم نشون میده.دوستور Dir رو هم که نوشتین ممنون جالب بود.

vb_nima
پنج شنبه 30 فروردین 1386, 16:30 عصر
:لبخندساده:
دوستان با تشکر از همگی .
در پایان این نتیجه گیری به دست می آید:
برای سرچ فولدرها و فایلها سه روش وجود دارد
1) File system object
2)تابع Dir()
3) توابع API: تابع FindFirstFile و FindNextFile
بر طبق نظر دوستان و مستندات دیگر سایتها به این نتیجه رسیدیم که سرعت توابع Api در این عمل از دو روش دیگر بیشتر است.

CodeMasterX
جمعه 31 فروردین 1386, 03:22 صبح
بله سرعت توابع API بیشتره.ولی اگر بخوای از فایل ها و فولدر های جستجو شده اطلاعات ریزی به دست بیاری باید کلی کد اضافی بنویسی و برنامت کمی گنگ میشه.ولی با FileSystemObject این کار راحت تر انجام میشه.
برای جستجوی فایل های مثلا مخرب در برنامه هایی مثل AntiVirus ها یا از توابع API استفاده می کنن و یا اونجوری که من دیدم بعضی از برنامه های پیشرفته هم،وقتی که سیستم شما Idle و یا به اصطلاح بیکار هست شروع میکنن به تهیه لیست از فایل های هارد دیسک شما و اطلاعات و داده های موجود در رجیستری ویندوز و از اون ها ایندکس میسازن.بعد وقتی که میخواید جستجو کنید،عملیات جستجو بر اساس این ایندکی ها صورت میگیره.

vb_nima
جمعه 31 فروردین 1386, 13:46 عصر
درسته حق باشماست.
فکر کنم google desktop search هم این کار را میکنه اطلاعات فایلها را زمانی که سیستم بیکاره داخل دیتابیسش میریزه و بعد میشه سریعتر سرچ کرد.
من خودم تا حالا باهاش سرچ نکردم ببینم سرعتش چقدره ولی فکر کنم سریعتر باشه.

CodeMasterX
جمعه 31 فروردین 1386, 18:00 عصر
بله سریعتر که هست.
ولی این تکنیک هم میتونه مشکل داشته باشه.مثلا ممکنه بعد از ایندکس کردن فایل ها و فولدر ها تغییری در نام یا داده اونا بوجد بیاد،بعد چی میشه ؟!