Ooops
November 28, 2020, 02:23:55 AM

Author Topic: [bb] Filename lister by Graythe [ 1+ years ago ]  (Read 563 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Filename lister by Graythe [ 1+ years ago ]
« on: June 29, 2017, 12:28:41 AM »
Title : Filename lister
Author : Graythe
Posted : 1+ years ago

Description : List filenames in named directory to a named text file.

Code :
Code: BlitzBasic
  1. Const One%=1,Two%=2
  2.  
  3. Global TextBuffer%,XPels%,YPels%
  4.  
  5. Graphics 640,480,32,2
  6.  
  7. YPels=FontHeight()-One
  8. XPels=GraphicsWidth()-One
  9.  
  10. NoFiles=FileList("C:","CList.txt",True)
  11.  
  12. End
  13.  
  14.  
  15.  
  16.  
  17.  
  18. Function FileList(FolderName$,StreamName$,Recurse%)
  19.  
  20. ;Read elapsed millisecs
  21. T=MilliSecs()
  22.  
  23. ;Create workspace
  24. WorkSpace%=CreateBank(8)
  25.  
  26. ;Create text buffer
  27. TextBuffer=CreateImage(XPels+One,YPels+One,Two)
  28.  
  29. ;Ensure empty output file exists
  30. StreamNo=WriteFile(StreamName)
  31. ;Terminate output file
  32. CloseFile StreamNo
  33. ;Prepare output file
  34. StreamNo=OpenFile(StreamName)
  35.  
  36. ;Descriptors to screen
  37. Text 0,0,"Scrutinising directory: "
  38. Text 0,40,"Files Found: "
  39.  
  40. ;Switch active buffer to textbuffer
  41. SetBuffer ImageBuffer(TextBuffer,False)
  42. ;White text
  43. Color 255,255,255
  44.  
  45. FlushFileList(FolderName,StreamNo,Recurse,WorkSpace)
  46.  
  47. ;Calculate time taken
  48. TString$=(MilliSecs()-T)/1000.
  49. ;Write duration and filecount to file
  50. WriteLine StreamNo,PeekInt(WorkSpace,False)+" files found in "+TString$+" seconds"
  51. ;Terminate file
  52. CloseFile StreamNo
  53. ;Free textbuffer
  54. FreeImage TextWindow
  55. FreeBank WorkSpace
  56.  
  57. End Function
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. Function FlushFileList(FolderName$,StreamNo%,Recurse%,WorkSpace%)
  71.  
  72. ; V1.1
  73. ;--------------------------------------------------------
  74. ;Output list of files from named directory to named file.
  75. ;--------------------------------------------------------
  76.  
  77.  
  78. ;Prepare folder for read
  79. ThisFolder=ReadDir(FolderName)
  80.  
  81. ;If a valid file Handle was obtained
  82. If ThisFolder
  83.  
  84.         ;Update screen
  85.         ;Initialise text
  86.         CopyRect False,False,XPels,YPels,False,False,ImageBuffer(TextBuffer,One)
  87.         ;Apply text
  88.         Text 0,0,FolderName
  89.         ;Update screen
  90.         CopyRect False,False,XPels,YPels,False,20,ImageBuffer(TextBuffer,False),FrontBuffer()
  91.  
  92.         ;Iterate files
  93.         Repeat
  94.                
  95.                 ;Enquire next filename
  96.                 FileName$=NextFile(ThisFolder)
  97.  
  98.                 ;Ensure a name returned otherwise exit loop
  99.                 If Len(FileName)
  100.                
  101.                         ;Determine - subdirectory name or a file?
  102.                         Select FileType(FolderName+FileName)
  103.        
  104.                                 Case One
  105.                                        
  106.                                         PokeInt WorkSpace,False,PeekInt(WorkSpace,False)+One
  107.  
  108.                                         ;Update screen
  109.                                         CopyRect False,False,XPels,YPels,False,False,ImageBuffer(TextBuffer,One)
  110.                                         Text False,False,PeekInt(WorkSpace,False)
  111.                                         CopyRect False,False,XPels,YPels,100,40,ImageBuffer(TextBuffer,False),FrontBuffer()
  112.  
  113.                                         ;Its a valid name - Add to file
  114.                                         WriteLine StreamNo,FolderName+FileName
  115.                        
  116.                                         ;Update screen
  117.                                         CopyRect False,False,XPels,YPels,False,False,ImageBuffer(TextBuffer,One)
  118.                                         Text False,False,FileName
  119.                                         CopyRect False,False,XPels,YPels,False,60,ImageBuffer(TextBuffer,False),FrontBuffer()
  120.                                                                                
  121.                                
  122.                                 Case Two
  123.                                         ;Its a directory
  124.                                         Select FileName
  125.                                                
  126.                                                 Case ".",".."
  127.                                                         ;Ignore these (means dir (where we are) and parent dir (in which we are))
  128.                                                        
  129.                                                 Default
  130.        
  131.                                                         ;Recurse with subdirectory name
  132.                                                         If Recurse Then FlushFileList(FolderName+FileName+"",StreamNo,Recurse,WorkSpace)
  133.                                         End Select
  134.        
  135.                         End Select
  136.                
  137.                 Else
  138.                
  139.                         Exit
  140.                        
  141.                 End If
  142.                
  143.        
  144.         Forever
  145.        
  146.         ;Terminate directory commitment
  147.         CloseDir ThisFolder
  148.  
  149. End If
  150.  
  151. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal