October 01, 2020, 08:51:06 PM

Author Topic: [bmx] Search Files by JoshK [ 1+ years ago ]  (Read 1665 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] Search Files by JoshK [ 1+ years ago ]
« on: June 29, 2017, 12:28:43 AM »
Title : Search Files
Author : JoshK
Posted : 1+ years ago

Description : These functions will do the searches Windows refuses to.

Code :
Code: BlitzMax
  1. SuperStrict
  2.  
  3. Framework brl.filesystem
  4. Import brl.standardio
  5.  
  6. Local file:String
  7. Local results:String[]
  8.  
  9. results=SearchFolder(AppDir,"search",["bmx","o"],SEARCH_RECURSIVE)
  10. If results
  11.         For file=EachIn results
  12.                 Print file
  13.         Next
  14. EndIf
  15.  
  16.  
  17. Const SEARCH_RECURSIVE:Int=1
  18. Const SEARCH_CONTENTS:Int=2
  19. Const SEARCH_CASESENSITIVE:Int=4
  20.  
  21. Function SearchFolder:String[](path:String,token:String,extensions:String[]=Null,options:Int=SEARCH_RECURSIVE,results:String[]=Null)
  22.         Local dir:String[],ext:String,n:Int,i:Int
  23.        
  24.         dir=LoadDir(path)      
  25.         If Not dir Return results
  26.        
  27.         If Not results results=New String[0]
  28.        
  29.         For n=0 To dir.length-1
  30.                 Select FileType(path+"/"+dir[n])
  31.                         Case 1
  32.                                 If extensions
  33.                                         ext=ExtractExt(dir[n])
  34.                                         If Not (SEARCH_CASESENSITIVE & options)
  35.                                                 ext=ext.tolower()
  36.                                         EndIf
  37.                                         For i=0 To extensions.length-1
  38.                                                 If extensions[i]=ext
  39.                                                         If SearchFile(path+"/"+dir[n],token,options)
  40.                                                                 results=results[..results.length+1]
  41.                                                                 results[results.length-1]=path+"/"+dir[n]
  42.                                                         EndIf
  43.                                                         Exit
  44.                                                 EndIf
  45.                                         Next
  46.                                 Else
  47.                                         If SearchFile(path+"/"+dir[n],token,options)
  48.                                                 results=results[..results.length+1]
  49.                                                 results[results.length-1]=path+"/"+dir[n]
  50.                                         EndIf
  51.                                 EndIf
  52.                         Case 2
  53.                                 If (SEARCH_RECURSIVE & options)
  54.                                         results=SearchFolder(path+"/"+dir[n],token,extensions,options,results)
  55.                                 EndIf
  56.                                 If Not (SEARCH_CONTENTS & options)
  57.                                         If SearchFile(path+"/"+dir[n],token,options)
  58.                                                 results=results[..results.length+1]
  59.                                                 results[results.length-1]=path+"/"+dir[n]
  60.                                         EndIf
  61.                                 EndIf
  62.                 EndSelect
  63.         Next
  64.         Return results
  65. EndFunction
  66.  
  67. Function SearchFile:Int(path:String,token:String,options:Int=0)
  68.         Local stream:TStream,s:String
  69.        
  70.         If Not (SEARCH_CASESENSITIVE & options)
  71.                 token=token.tolower()
  72.         EndIf
  73.         If (SEARCH_CONTENTS & options)
  74.                 stream=ReadFile(path)
  75.                 If Not stream Return False
  76.                 While Not stream.Eof()
  77.                         s=stream.ReadLine()
  78.                         If Not (SEARCH_CASESENSITIVE & options)
  79.                                 s=s.tolower()
  80.                         EndIf
  81.                         If s.contains(token)
  82.                                 stream.close()
  83.                                 Return True
  84.                         EndIf
  85.                 Wend
  86.                 stream.close()
  87.         Else
  88.                 If Not (SEARCH_CASESENSITIVE & options)
  89.                         path=path.tolower()
  90.                 EndIf
  91.                 path=StripDir(path)
  92.                 If path.contains(token) Return True
  93.         EndIf
  94.         Return False
  95. EndFunction


Comments : none...

Offline Hardcoal

  • Sr. Member
  • ****
  • Posts: 469
Re: [bmx] Search Files by JoshK [ 1+ years ago ]
« Reply #1 on: July 16, 2020, 05:52:38 AM »
Awesome
Go with the Flow

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal