Opened 14 years ago
Closed 14 years ago
#2045 closed Feature Request (Rejected)
FileFindNextFile advanced parameter
| Reported by: | money | Owned by: | |
|---|---|---|---|
| Milestone: | Component: | AutoIt | |
| Version: | Severity: | None | |
| Keywords: | Cc: |
Description
FileFindNextFile
--------------------------------------------------------------------------------
Returns a filename according to a previous call to FileFindFirstFile.
FileFindNextFile ( search, [advanced = 0] )
Parameters
search - The search handle, as returned by FileFindFirstFile.
advanced
0 = returns a filename according to a previous call to FileFindFirstFile.
1 = returns an array containing the filename and extended information.
When using the "advanced" parameter the information is returned in an array
+ with extended information:
$array[0] = filename
$array[1] = 8.3 filename (same as FileGetShortname(file))
$array[2] = size of the file (same as FileGetSize(file))
$array[3] = file attribute (same as FileGetAttrib(file))
$array[4] = date modified (same as FileGetTime(file, 0, 1) )
$array[5] = date created (same as FileGetTime(file, 1, 1))
$array[6] = date accessed (same as FileGetTime(file, 2, 1))
The advanced parameter would remove the need to use 6 additional File* calls to get
+ the information we're after and add negligible time because this would be handled
+ internally by AutoIt.
Basically what FindFirstFile/FindNextFile returns, except the values correspond
+ with the other File* functions. e.g. FileGetAttrib()
Of course this would be fully backwords compatible with existing scripts
+ If the advanced parameter is 0 (default) then returns just the filename.
Here we have decent speed with FileFind* used alone, but once we need to dig out
+ additional information, things start to noticably slow down.
$time = TimerInit()
_Example(@WindowsDir, False)
ConsoleWrite("name only - completed (ms): "& Round(TimerDiff($time), 4) &@lf)
$time = TimerInit()
_Example(@WindowsDir, True)
ConsoleWrite("extended - completed (ms): "& Round(TimerDiff($time), 4) &@lf)
Func _Example($sPath, $bExtended = False)
Local $hFind = FileFindFirstFile($sPath & "\*.*")
Local $aFile[7], $sFile
If @error Or $hFind = -1 Then Return SetError(1, 0, 0)
While 1
$sFile = FileFindNextFile($hFind)
If @error Or $sFile = -1 Then ExitLoop
; skip folders
If Not @extended Then
$aFile[0] = $sFile
; These 6 functions significantly impact search time.
; FileFindNextFile with advanced parameter would
; remove the need for these additional file calls
If $bExtended Then
$aFile[1] = FileGetShortName($sPath &"\"& $sFile)
$aFile[2] = FileGetSize($sPath &"\"& $sFile)
$aFile[3] = FileGetAttrib($sPath &"\"& $sFile)
$aFile[4] = FileGetTime($sPath &"\"& $sFile, 0, 1)
$aFile[5] = FileGetTime($sPath &"\"& $sFile, 1, 1)
$aFile[6] = FileGetTime($sPath &"\"& $sFile, 2, 1)
EndIf
;~ ConsoleWrite( _
;~ '-----------------------------'&@LF& _
;~ 'name: '& $aFile[0] &@LF& _
;~ 'short name: '& $aFile[1] &@LF& _
;~ 'size: '& $aFile[2] &@LF& _
;~ 'attribute: '& $aFile[3] &@LF& _
;~ 'date modified: '& $aFile[4] &@LF& _
;~ 'date created: '& $aFile[5] &@LF& _
;~ 'date accessed: '& $aFile[6] &@LF)
EndIf
WEnd
FileClose($hFind)
EndFunc
Attachments (0)
Change History (2)
comment:1 Changed 14 years ago by TicketCleanup
- Version 3.3.6.1 deleted
comment:2 Changed 14 years ago by Valik
- Resolution set to Rejected
- Status changed from new to closed
You demonstrate in your request that you can obtain the data you want. There is no need for the feature to be built-in. "But it's faster" is not a reason.
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.

Automatic ticket cleanup.