October 28, 2020, 06:19:44 AM

Author Topic: [bb] File-Function collection by Klaas [ 1+ years ago ]  (Read 1206 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] File-Function collection by Klaas [ 1+ years ago ]
« on: June 29, 2017, 12:28:43 AM »
Title : File-Function collection
Author : Klaas
Posted : 1+ years ago

Description : a small collection of file function i often use in my programms ... well, maybe someon is interessted

Code :
Code: BlitzBasic
  1. ;some functions to deal with files and folders
  2. ;i use arrays for easy access, but can be changed to types easily
  3. ;
  4. ;hope that helps someone with this anoying recursive folder stuff
  5.  
  6.  
  7. Dim xff_splitresult$(100)
  8. Dim ff_results$(100)
  9.  
  10. ;----------------------------------------- Functions
  11. ;ff_is_dir(dirname$)
  12. ;returns true if dirname$ is a existing directory
  13.  
  14. ;------
  15. ;ff_is_file(filename$)
  16. ;returns true if filename$ is a existing file
  17.  
  18.  
  19. ;------
  20. ;ff_searchFile(name$,path$)
  21. ;name$ = searchpattern like "*.jpg" or "*metal*.png" ... "*" is the wildcard
  22. ;path$ = the path to search in
  23. ;returns the number of matches .. matches can then be found in "ff_results" array
  24.  
  25. ;------
  26. ;ff_pathname$(filename$)
  27. ;returns the file path ... "D:progsfile.jpg" -> "D:progs"
  28.  
  29. ;------
  30. ;ff_filename$(filename$)
  31. ;returns the file name ... "D:progsfile.jpg" -> "file.jpg"
  32.  
  33. ;------
  34. ;ff_dirname$(filename$)
  35. ;returns the directory name ... "D:progsfile.jpg" -> "progs"
  36.  
  37. ;------
  38. ;ff_volumename$(filename$)
  39. ;returns the volume name ... "D:progsfile.jpg" -> "D:"
  40.  
  41. ;------
  42. ;ff_copy(file$,new_file$,[overwrite],[move])
  43. ;file = original file
  44. ;new_file = file to copy to
  45. ;overwrite = set to true if you wish to overwrite an existing file
  46. ;move = set to true if you wish to move the original file
  47. ;returns true on success
  48.  
  49. ;------
  50. ;ff_mkpath(path$)
  51. ;creates a given filepath
  52. ;path = path to create ... "D:progs     hingsfoo" .. if "D:progs" exists then "D:progs  hings" and ""D:progs    hingsfoo" wil be created
  53. ;returns true on success
  54.  
  55. ;------
  56. ;ff_smartcopy(file$,new_file$,[overwrite],[move])
  57. ;file = original file or folder
  58. ;new_file = file or folder to copy to
  59. ;overwrite = set to true if you wish to overwrite an existing file's
  60. ;move = set to true if you wish to move the original file's
  61. ;returns true on success
  62. ;
  63. ;this function can copy whole directory trees with all files in it
  64.  
  65. ;------
  66. ;ff_unlink(file$)
  67. ;file = file or folder to delete
  68. ;returns true on success
  69. ;
  70. ;deletes files or whole directory structures
  71.  
  72. ;------
  73.  
  74. ;file functions
  75. Function ff_is_dir(folder$)
  76.         If FileType(folder$) = 2 Then Return True
  77. End Function
  78.  
  79. Function ff_is_file(file$)
  80.         If FileType(file$) = 1 Then Return True
  81. End Function
  82.  
  83. Function ff_searchFile(name$,path$,count=0)
  84.         comp = xff_split("*",name$)
  85.  
  86.         dir = ReadDir(path$)
  87.         If Not dir Then Return False   
  88.         entry$ = NextFile(dir)
  89.  
  90.         While (entry$ <> "")
  91.                 If entry$ <> "." And entry$ <> ".."
  92.                         full_entry$ = path$+""+entry$
  93.                        
  94.                         Select FileType(full_entry$)
  95.                         Case 0
  96.                                 Return False
  97.                         Case 1
  98.                                 result$ = full_entry
  99.                                 found = True
  100.                                 pos = 1
  101.                                 For i=0 To comp - 1
  102.                                         If Not xff_splitresult(i) = ""
  103.                                                 pos = Instr(entry$,xff_splitresult(i),pos)
  104.                                                 If Not pos
  105.                                                         found = False
  106.                                                         Exit
  107.                                                 EndIf
  108.                                         EndIf
  109.                                 Next
  110.                                 If found
  111.                                         ff_results(count) = path$+""+entry
  112.                                         count = count + 1
  113.                                 EndIf
  114.                         Case 2
  115.                                 count = ff_searchFile(name$,full_entry$,count)
  116.                         End Select
  117.                 End If
  118.                 entry$ = NextFile(dir)
  119.         Wend
  120.         Return count
  121. End Function
  122.  
  123. Function ff_pathname$(txt$)
  124.         txt$ = Replace(txt$,"/","")
  125.         length = xff_split("",txt$)
  126.        
  127.         dir$ = xff_splitresult(0)
  128.         For i=1 To length-2
  129.                 dir$ = dir$ + "" + xff_splitresult(i)
  130.         Next
  131.        
  132.         Return dir$
  133. End Function
  134.  
  135. Function ff_filename$(txt$)
  136.         txt$ = Replace(txt$,"/","")
  137.         length = xff_split("",txt$)
  138.        
  139.         file$ = xff_splitresult(0)
  140.         For i=0 To length - 1
  141.                 file$ = xff_splitresult(i)
  142.         Next
  143.        
  144.         Return file$
  145. End Function
  146.  
  147. Function ff_dirname$(txt$)
  148.         txt$ = Replace(txt$,"/","")
  149.         xff_split(":",txt$)
  150.  
  151.         txt$ = xff_splitresult(1)
  152.         length = xff_split("",txt$)
  153.        
  154.         For i=0 To length-2
  155.                 dir$ = dir$ + "" + xff_splitresult(i)
  156.         Next
  157.        
  158.         Return dir$
  159. End Function
  160.  
  161. Function ff_volumename$(txt$)
  162.         length=xff_split(":",txt$)
  163.        
  164.         Return xff_splitresult(0)
  165. End Function
  166.  
  167. Function ff_mkpath(path$)
  168.         path$=Replace(path$,"/","")
  169.         length=xff_split("",path$)
  170.        
  171.         path_by_now$=xff_splitresult(0)
  172.         For i=0 To length-1
  173.                 If Not FileType(path_by_now$) = 2
  174.                         CreateDir(path_by_now$)
  175.                 End If
  176.                 If Not FileType(path_by_now$) Then Return False
  177.                 path_by_now$ = path_by_now$+"/"+xff_splitresult(i+1)
  178.         Next
  179.         Return True
  180. End Function
  181.  
  182. Function ff_unlink(file$)
  183.         Select FileType(file$)
  184.         Case 0
  185.                 Return False
  186.         Case 1
  187.                 DeleteFile(file$)
  188.                 If FileType(file$) <> 0 Then Return False
  189.         Case 2
  190.                 dir = ReadDir(file$)
  191.                 entry$ = NextFile(dir)
  192.                 While (entry$ <> "")
  193.                         If entry$ <> "." And entry$ <> ".."
  194.                                 full_entry$ = file$+""+entry$
  195.                                 Select FileType(full_entry$)
  196.                                 Case 0
  197.                                 Case 1
  198.                                         If Not ff_unlink(full_entry$) Then Return False
  199.                                 Case 2
  200.                                         If Not ff_unlink(full_entry$) Then Return False
  201.                                 End Select
  202.                         End If
  203.                         entry$=NextFile(dir)
  204.                 Wend
  205.                 DeleteDir(file$)
  206.         End Select
  207.         Return True
  208. End Function
  209.  
  210. Function ff_copy(file$,new_file$,overwrite=0,move=0)
  211.         If FileType(file$) = 2 Then Return False
  212.        
  213.         If Not overwrite
  214.                 If FileType(new_file$) Return False
  215.         End If
  216.  
  217.         CopyFile(file$,new_file$)      
  218.         If FileType(new_file$) <> 1 Return False       
  219.        
  220.         If move
  221.                 DeleteFile(file$)
  222.         End If
  223.         Return True    
  224. End Function
  225.  
  226. Function ff_smartcopy(file$,new_file$,overwrite=0,move=0)
  227.         If Not overwrite
  228.                 If FileType(new_file$)=1 Return False
  229.         End If
  230.  
  231.         Select FileType(file$)
  232.         Case 0
  233.                 Return False
  234.         Case 1
  235.                 dir$ = ff_pathname$(new_file$)
  236.                
  237.                 If Not ff_is_dir(dir$)
  238.                         If Not ff_mkpath(dir$) Then Return False
  239.                 End If
  240.  
  241.                 CopyFile(file$,new_file$)
  242.                 If Not ff_is_file(new_file$) Then Return False
  243.                 If move Then DeleteFile(file$)
  244.         Case 2
  245.                 ff_mkpath(new_file$)
  246.                
  247.                 dir = ReadDir(file$)
  248.                 entry$ = NextFile(dir)
  249.                 While (entry$ <> "")
  250.                         If entry$ <> "." And entry$ <> ".."
  251.                                 full_entry$ = file$+""+entry$
  252.                                 Select FileType(full_entry$)
  253.                                 Case 0
  254.                                 Case 1
  255.                                         If Not ff_smartcopy(full_entry$,new_file$+""+entry$,overwrite,move) Then Return False
  256.                                 Case 2
  257.                                         If Not ff_smartcopy(full_entry$,new_file$+""+entry$,overwrite,move) Then Return False
  258.                                 End Select
  259.                         End If
  260.                         entry$=NextFile(dir)
  261.                 Wend
  262.                 If move Then DeleteDir(file$)
  263.         End Select
  264.         Return True
  265. End Function
  266.  
  267. ;help functions
  268. Function xff_split(seperator$,txt$)
  269.         pos=Instr(txt$,seperator$,1)   
  270.         count = 1
  271.         While (pos)
  272.                 xff_splitresult(count-1) = Left(txt$,pos-Len(seperator))
  273.                
  274.                 txt$=Right(txt$,Len(txt$)-pos-Len(seperator)+1)
  275.                 pos=Instr(txt$,seperator$,1)
  276.                 count=count+1
  277.         Wend
  278.         xff_splitresult(count-1)=txt$
  279.        
  280.         Return count
  281. End Function


Comments :


gman(Posted 1+ years ago)

 works well.  some additional functions for this library:ff_juststem - returns the just the filename without the extensionff_justext - returns just the file extensionff_addbs - adds a backslash to a path if neededff_forceext - forces the file extension To be the extension passedff_forcepath - forces the path of a file to a different path
Code: [Select]
; ================================
; Author: gman
; Date: 2004_08_18
; Title: ff_juststem
; Description: - returns the just the filename without the extension
; Requirements: - File-Function collection by Klaas (ID: 934)
; ================================
Function ff_juststem$(file$)
file$=ff_filename(file$)
xff_split(".",file$)
Return xff_splitresult(0)
End Function

; ================================
; Author: gman
; Date: 2004_08_18
; Title: ff_justext
; Description: - returns just the file extension
; Requirements: - File-Function collection by Klaas (ID: 934)
; ================================
Function ff_justext$(file$)
file$=ff_filename(file$)
xff_split(".",file$)
Return xff_splitresult(1)
End Function

; ================================
; Author: gman
; Date: 2004_08_18
; Title: ff_addbs
; Description: - adds a backslash to a path if needed
; Requirements: - File-Function collection by Klaas (ID: 934)
; ================================
Function ff_addbs$(path$)
path$=Trim(path$)
If Right(path$,1)<>""
path$=path$+""
EndIf
Return path$
End Function

; ================================
; Author: gman
; Date: 2004_08_18
; Title: ff_forceext
; Description: - forces the file extension To be the extension passed
; Requirements:
; - File-Function collection by Klaas (ID: 934)
; - ff_addbs(), ff_juststem()
; ================================
Function ff_forceext$(file$,ext$)
path$=ff_addbs(ff_pathname(file$))
file$=ff_juststem(file$)
If file$<>""
file$=file$+"."+ext$
EndIf
Return path$+file$
End Function

; ================================
; Author: gman
; Date: 2004_08_18
; Title: ff_forcepath
; Description: - forces the path of a file to a different path
; Requirements:
; - File-Function collection by Klaas (ID: 934)
; - ff_addbs()
; ================================
Function ff_forcepath$(file$,path$)
path$=ff_addbs(path$)
file$=ff_filename(file$)
Return path$+file$
End Function


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal