Code archives/File Utilities/File-Function collection
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| a small collection of file function i often use in my programms ... well, maybe someon is interessted | |||||
;some functions to deal with files and folders
;i use arrays for easy access, but can be changed to types easily
;
;hope that helps someone with this anoying recursive folder stuff
Dim xff_splitresult$(100)
Dim ff_results$(100)
;----------------------------------------- Functions
;ff_is_dir(dirname$)
;returns true if dirname$ is a existing directory
;------
;ff_is_file(filename$)
;returns true if filename$ is a existing file
;------
;ff_searchFile(name$,path$)
;name$ = searchpattern like "*.jpg" or "*metal*.png" ... "*" is the wildcard
;path$ = the path to search in
;returns the number of matches .. matches can then be found in "ff_results" array
;------
;ff_pathname$(filename$)
;returns the file path ... "D:\progs\file.jpg" -> "D:\progs"
;------
;ff_filename$(filename$)
;returns the file name ... "D:\progs\file.jpg" -> "file.jpg"
;------
;ff_dirname$(filename$)
;returns the directory name ... "D:\progs\file.jpg" -> "\progs"
;------
;ff_volumename$(filename$)
;returns the volume name ... "D:\progs\file.jpg" -> "D:"
;------
;ff_copy(file$,new_file$,[overwrite],[move])
;file = original file
;new_file = file to copy to
;overwrite = set to true if you wish to overwrite an existing file
;move = set to true if you wish to move the original file
;returns true on success
;------
;ff_mkpath(path$)
;creates a given filepath
;path = path to create ... "D:\progs\things\foo" .. if "D:\progs" exists then "D:\progs\things" and ""D:\progs\things\foo" wil be created
;returns true on success
;------
;ff_smartcopy(file$,new_file$,[overwrite],[move])
;file = original file or folder
;new_file = file or folder to copy to
;overwrite = set to true if you wish to overwrite an existing file's
;move = set to true if you wish to move the original file's
;returns true on success
;
;this function can copy whole directory trees with all files in it
;------
;ff_unlink(file$)
;file = file or folder to delete
;returns true on success
;
;deletes files or whole directory structures
;------
;file functions
Function ff_is_dir(folder$)
If FileType(folder$) = 2 Then Return True
End Function
Function ff_is_file(file$)
If FileType(file$) = 1 Then Return True
End Function
Function ff_searchFile(name$,path$,count=0)
comp = xff_split("*",name$)
dir = ReadDir(path$)
If Not dir Then Return False
entry$ = NextFile(dir)
While (entry$ <> "")
If entry$ <> "." And entry$ <> ".."
full_entry$ = path$+"\"+entry$
Select FileType(full_entry$)
Case 0
Return False
Case 1
result$ = full_entry
found = True
pos = 1
For i=0 To comp - 1
If Not xff_splitresult(i) = ""
pos = Instr(entry$,xff_splitresult(i),pos)
If Not pos
found = False
Exit
EndIf
EndIf
Next
If found
ff_results(count) = path$+"\"+entry
count = count + 1
EndIf
Case 2
count = ff_searchFile(name$,full_entry$,count)
End Select
End If
entry$ = NextFile(dir)
Wend
Return count
End Function
Function ff_pathname$(txt$)
txt$ = Replace(txt$,"/","\")
length = xff_split("\",txt$)
dir$ = xff_splitresult(0)
For i=1 To length-2
dir$ = dir$ + "\" + xff_splitresult(i)
Next
Return dir$
End Function
Function ff_filename$(txt$)
txt$ = Replace(txt$,"/","\")
length = xff_split("\",txt$)
file$ = xff_splitresult(0)
For i=0 To length - 1
file$ = xff_splitresult(i)
Next
Return file$
End Function
Function ff_dirname$(txt$)
txt$ = Replace(txt$,"/","\")
xff_split(":\",txt$)
txt$ = xff_splitresult(1)
length = xff_split("\",txt$)
For i=0 To length-2
dir$ = dir$ + "\" + xff_splitresult(i)
Next
Return dir$
End Function
Function ff_volumename$(txt$)
length=xff_split(":",txt$)
Return xff_splitresult(0)
End Function
Function ff_mkpath(path$)
path$=Replace(path$,"/","\")
length=xff_split("\",path$)
path_by_now$=xff_splitresult(0)
For i=0 To length-1
If Not FileType(path_by_now$) = 2
CreateDir(path_by_now$)
End If
If Not FileType(path_by_now$) Then Return False
path_by_now$ = path_by_now$+"/"+xff_splitresult(i+1)
Next
Return True
End Function
Function ff_unlink(file$)
Select FileType(file$)
Case 0
Return False
Case 1
DeleteFile(file$)
If FileType(file$) <> 0 Then Return False
Case 2
dir = ReadDir(file$)
entry$ = NextFile(dir)
While (entry$ <> "")
If entry$ <> "." And entry$ <> ".."
full_entry$ = file$+"\"+entry$
Select FileType(full_entry$)
Case 0
Case 1
If Not ff_unlink(full_entry$) Then Return False
Case 2
If Not ff_unlink(full_entry$) Then Return False
End Select
End If
entry$=NextFile(dir)
Wend
DeleteDir(file$)
End Select
Return True
End Function
Function ff_copy(file$,new_file$,overwrite=0,move=0)
If FileType(file$) = 2 Then Return False
If Not overwrite
If FileType(new_file$) Return False
End If
CopyFile(file$,new_file$)
If FileType(new_file$) <> 1 Return False
If move
DeleteFile(file$)
End If
Return True
End Function
Function ff_smartcopy(file$,new_file$,overwrite=0,move=0)
If Not overwrite
If FileType(new_file$)=1 Return False
End If
Select FileType(file$)
Case 0
Return False
Case 1
dir$ = ff_pathname$(new_file$)
If Not ff_is_dir(dir$)
If Not ff_mkpath(dir$) Then Return False
End If
CopyFile(file$,new_file$)
If Not ff_is_file(new_file$) Then Return False
If move Then DeleteFile(file$)
Case 2
ff_mkpath(new_file$)
dir = ReadDir(file$)
entry$ = NextFile(dir)
While (entry$ <> "")
If entry$ <> "." And entry$ <> ".."
full_entry$ = file$+"\"+entry$
Select FileType(full_entry$)
Case 0
Case 1
If Not ff_smartcopy(full_entry$,new_file$+"\"+entry$,overwrite,move) Then Return False
Case 2
If Not ff_smartcopy(full_entry$,new_file$+"\"+entry$,overwrite,move) Then Return False
End Select
End If
entry$=NextFile(dir)
Wend
If move Then DeleteDir(file$)
End Select
Return True
End Function
;help functions
Function xff_split(seperator$,txt$)
pos=Instr(txt$,seperator$,1)
count = 1
While (pos)
xff_splitresult(count-1) = Left(txt$,pos-Len(seperator))
txt$=Right(txt$,Len(txt$)-pos-Len(seperator)+1)
pos=Instr(txt$,seperator$,1)
count=count+1
Wend
xff_splitresult(count-1)=txt$
Return count
End Function |
Comments
| ||
| works well. some additional functions for this library: ff_juststem - returns the just the filename without the extension ff_justext - returns just the file extension ff_addbs - adds a backslash to a path if needed ff_forceext - forces the file extension To be the extension passed ff_forcepath - forces the path of a file to a different path
; ================================
; 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
|
Code Archives Forum