Tenesta ScriptForge.FileSystem

Tenesta FileSystem inneheld rutinar for handsaming av filer og mapper. Her kjem nokre eksempel på funksjonane som vert leverte av denne tenesta:

note

Metodane i tenesta FileSystem er for det meste basert på XSimpleFileAccess UNO interface.


Definisjonar

Tabellen nedanfor viser hovudparameterane som vert brukte av dei fleste metodane i FileSystem-tenestene.

Parameter

Beskriving

FileName

Det fullstendige namnet på filen, inkludert stien utan eit stiskiljeteikn til slutt.

FolderName

Det fullstendige namnet på mappa, inkludert stien. Det kan innehalda eller ikkje innehalda det avsluttande stiskilleteiknet.

Name

Den siste komponenten i mappenamnet eller filnamnet inkludert utvidinga. Denne parameteren vert alltid sett med formatet brukt i operativsystemet.

BaseName

Den siste komponenten i mappenamnet eller filnamnet utan utvidinga.

NamePattern

Nokre av namna ovanfor inneheld jokerteikn i den siste komponenten. Tillatne jokerteikn er:

  • "?" stÃ¥r for eitt enkelt teikn

  • "*" stÃ¥r for ingen, eitt eller fleire teikn


tip

Tenesta FileSystem gjer det mogleg å utføra operasjonar på fleire filer samstundes. Ved hjelp av namnemønster kan brukarskript kopiera, flytta eller slette fleire filer. På den annen sida kan grunnleggjande innebygde metodar berre handsama enkeltfiler.


Notasjon for filnamn

Notasjonen som vert brukt for å uttrykkja fil- og mappe-namn, både i argumenta og returverdiane, er definerte av eigenskapen FileNaming i tenesta FileSystem.

Kort sagt, dei moglege representasjonstypane er «URL» (URL-filnotasjon), «SYS» (operativsystemnotasjon) og «ANY» (standard). Sjå meir informasjon i nedanfor.

tip

Eit eksempel på URL-notasjonen er file:///C:/Documents/my_file.odt. Når det er mogleg, bør du vurdera å bruka URL-notasjonen fordi det er eit meir berbart alternativ.


Oppkall av tenester

Før du kan bruka tenesta FileSystem, må du henta inn biblioteket ScriptForge med:


        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      

Den neste kodesnutten kallar opp tenesta FileSystem. Metoden BuildPath er brukt som eksempel.


      Dim FSO As Variant
      FSO = CreateScriptService("FileSystem")
      FSO.BuildPath(...)
    
note

Denne tenesta har full støtte både i Basic og Python. Alle eksempla er skrivne i programmeringsspråket Basic og kan enkelt omformast til Python.


Eigenskapar

Namn

Skriveverna

Type

Beskriving

FileNaming

Nei

String

Set eller returnerer gjeldande fil- og mappenotasjon, anten «ANY», «URL» eller «SYS»:

  • "ANY": (standard) metodane i tenesta FileSystem godtar bÃ¥de URL-adressa og gjeldande operativsystemnotasjon for inndataargument, men returnerer alltid URL-strengar.

  • "URL": metodane i tenesta FileSystem ventar URL-notasjon i inndata-argument og returnerer URL-strengar.

  • "SYS": metodane i tenesta FileSystem ventar operativsystemet sin notasjon brukt bÃ¥de i inndata-argument og returnerstrengane.

Når eigenskapen FileNaming er sett, vert han uendra anten til slutten av LibreOffice-økta eller til han vert sett på nytt.

ConfigFolder

Ja

String

Returnerer konfigurasjonsmappa for LibreOffice.

ExtensionsFolder

Ja

String

Returnerer mappa som utvidingane er installerte i.

HomeFolder

Ja

String

Returnerer brukaren si heimemappe.

InstallFolder

Ja

String

Returnerer installasjonsmappa for LibreOffice.

TemplatesFolder

Ja

String

Returnerer mappa som inneheld systemet sine malfiler.

TemporaryFolder

Ja

String

Returnerer mappa til dei mellombels filene som er definerte i LibreOffice sti-innstillingar.

UserTemplatesFolder

Ja

String

Returnerer mappa som inneheld dei brukardefinerte malfilene.


Liste over metodar i tenesta FileSystem

BuildPath
CompareFiles
CopyFile
CopyFolder
CreateFolder
CreateTextFile
DeleteFile
DeleteFolder
FileExists

Files
FolderExists
GetBaseName
GetExtension
GetFileLen
GetFileModified
GetName
GetParentFolderName

GetTempName
HashFile
MoveFile
MoveFolder
OpenTextFile
PickFile
PickFolder
SubFolders


BuildPath

Slår saman ein mappesti og namnet på ei fil og returnerer det fullstendige filnamnet med eit gyldig stikiljeteikn. Stiskiljeteiknet vert lagt til berre om det er nødvendig.

Syntaks:


        FSO.BuildPath(FolderName As String, Name As String) As String
    

Parametrar:

FolderName: Stien som Name skal kombinerast med. Den gjevne stien treng ikkje vera til ei eksisterande mappe.

Name: Namnet på fila som skal føyast til FolderName. Denne parameteren brukar notasjonen til det gjeldande operativsystemet.

Eksempel:


      Dim FSO : FSO = CreateScriptService("FileSystem")
      FSO.FileNaming = "URL"
      MsgBox FSO.BuildPath("file:///home/user", "sample file.odt")
      'file:///home/user/sample%20file.odt
    

CompareFiles

Samanliknar to filer og returnerer Sann når dei ser ut til å vera like.

Avhengig av verdien til argumentet CompareContents, kan samanlikninga mellom begge filene anten berre vera basert på filattributt (for eksempel den sist endra datoen), eller basert på filinnhaldet.

Syntaks:


          FSO.CompareFiles(FileName1 As String, FileName2 As String, [CompareContents As Boolean]) As Boolean
      

Parametrar:

FileName1, FileName2: Filene som skal samanliknast.

CompareContents: NÃ¥r Sann, er innhaldet av filene samanlikna (standard = Usann).

Eksempel:


        FSO.FileNaming = "SYS"
        If FSO.CompareFiles("C:\myFile1.txt", "C:\myFile2.txt", CompareContents := False) Then
            ...
        End If
      

CopyFile

Kopierer éi eller fleire filer frå éin stad til ein annan. Returnerer Sann viss minst éi fil er kopiert, eller Usann viss det skjedde ein feil.

Det oppstår også ein feil viss parameteren Source brukar jokerteikn og det ikkje er samsvar med filene.

Metoden stoppar straks når det oppstår ein feil. Metoden rullar ikkje tilbake, og angrar heller ikkje endringar som vart gjort før feilen oppstod.

Syntaks:


        FSO.CopyFile(Source As String, Destination As String, [Overwrite As Boolean]) As Boolean
    

Parametrar:

Source: Det kan vera eit FileName eller eit NamePattern som peikar på éi eller fleire filer som skal kopierast.

Mål: Det kan vera anten eit Filnamn som spesifiserer kvar den enkle Kjelde-fila skal kopierast til, eller eit Mappenamn som fleire filer frå Kjelde skal kopierast til.

Overwrite: Viss Sann (standard), kan filene overskrivast. Metoden vil ikkje lukkast viss Destination er skriveverna, same kva verdi som er sett i Overwrite.

Eksempel:


        FSO.FileNaming = "SYS"
        ' Kopierer ei enkelt fil
        FSO.CopyFile("C:\Documents\my_file.odt", "C:\Temp\copied_file.odt")
        ' Kopierer fleire filer. Berre filer vert kopierte, ikkje undermapper.
        FSO.CopyFile("C:\Documents\*.*", "C:\Temp\", Overwrite := False)
    

CopyFolder

Kopierer éi eller fleire mapper frå éin stad til ein annan. Returnerer Sann viss minst éi mappe er kopiert, eller Usann viss det skjedde ein feil.

Det oppstår også ein feil viss parameteren Source brukar jokerteikn og det ikkje er samsvar med mappene.

Metoden stoppar straks når det oppstår ein feil. Metoden rullar ikkje tilbake, og angrar heller ikkje endringar som vart gjort før feilen oppstod.

Syntaks:


        FSO.CopyFolder(Source As String, Destination As String, [Overwrite As Boolean]) As Boolean
    

Parametrar:

Source: Kan vera eit FolderName eller eit NamePattern som peikar på éi eller fleire mapper som skal kopierast.

Destination: Spesifiserer det FolderName som ei enkelt eller fleire mapper, definert i Source, skal kopierast til.

Overwrite: Viss Sann (standard), kan filene overskrivast. Metoden vil ikkje lukkast viss Destination er skriveverna, same kva verdi som er sett i Overwrite.

Eksempel:


        FSO.FileNaming = "SYS"
        FSO.CopyFolder("C:\Documents\*", "C:\Temp\", Overwrite := False)
        ' Mapper med filer og undermapper vert kopierte
    

CreateFolder

Lagar det spesifiserte FolderName. Returnerer Sann viss det kan lukkast å laga mappa.

Viss den spesifiserte mappa har ei overordna mappe som ikkje finst, vert denne laga.

Syntaks:


        FSO.CreateFolder(FolderName As String) As Boolean
    

Parametrar:

FolderName: Ein streng som representerer mappa som skal lagast. Viss mappa finst frå før, vert det sett opp eit unnatak.

Eksempel:


        FSO.FileNaming = "SYS"
        FSO.CreateFolder("C:\NewFolder\")
    

CreateTextFile

Lagar ei spesifikk fil og returnerer objektet TextStream som kan brukast for å skriva fila.

Metoden returnerer objektet Null viss det går feil.

Syntaks:


        FSO.CreateTextFile(FileName As String, [Overwrite As Boolean], [Encoding As String]) As Object
    

Parametrar:

FileName: Namnet på fila som skal lagast.

Overwrite: Boolsk verdi so bestemmer om FileName kan overskrivast (standard = Sann).

Encoding: Teiknsettet som skal brukast. Standard = «UTF-8»).

Eksempel:


        Dim myFile As Object
        FSO.FileNaming = "SYS"
        Set myFile = FSO.CreateTextFile("C:\Temp\ThisFile.txt", Overwrite := True)
    
note

Du kan læra meir om namna på teiknsetta på sida IANA's Character Set. Merk at LibreOffice ikkje implementerer alle teiknsetta som finst.


DeleteFile

Slettar éi eller fleire filer. Returnerer Sann viss minst éi fil er sletta, eller Usann viss det skjedde ein feil.

Det oppstår også ein feil viss parameteren FileName brukar jokerteikn og det ikkje er samsvar med filene.

Fila som skal slettast må ikkje vera skriveverna.

Metoden stoppar straks når det oppstår ein feil. Metoden rullar ikkje tilbake, og angrar heller ikkje endringar som vart gjort før feilen oppstod.

Syntaks:


        FSO.DeleteFile(FileName As String) As Boolean
    

Parametrar:

FileName: Det kan vera eit FileName eller eit NamePattern som indikerer éi eller fleire filer som skal slettast.

Eksempel:


        FSO.FileNaming = "SYS"
        FSO.DeleteFile("C:\Temp\*.docx")
        ' Berre filer vert sletta, ikkje undermapper.
    

DeleteFolder

Slettar éi eller fleire mapper. Returnerer Sann viss minst éi mappe er sletta, eller Usann viss det skjedde ein feil.

Det oppstår også ein feil viss parameteren FolderName brukar jokerteikn og det ikkje er samsvar med filene.

Mappa som skal slettast må ikkje vera skriveverna.

Metoden stoppar straks når det oppstår ein feil. Metoden rullar ikkje tilbake, og angrar heller ikkje endringar som vart gjort før feilen oppstod.

Syntaks:


        FSO.DeleteFolder(FolderName As String) As Boolean
    

Parametrar:

FolderName: Det kan vera eit FolderName eller eit NamePattern som indikerer éi eller fleire mapper som skal slettast.

Eksempel:


        FSO.FileNaming = "SYS"
        FSO.DeleteFolder("C:\Temp\*")
        ' Berre mapper vert sletta. Filer i den øvste mappa (C:\Temp\) vert ikkje sletta.
    

FileExists

Returnerer Sann viss eit gjeve filnamn er gyldig og fila finst, elles returnerer metoden Usann.

Viss parameteren FileName er eit mappenamn som finst frå før, returnerer metoden Usann.

Syntaks:


        FSO.FileExists(FileName As String) As Boolean
    

Parametrar:

FileName: Ein streng som representerer fila som skal testast.

Eksempel:


        FSO.FileNaming = "SYS"
        If FSO.FileExists("C:\Documents\my_file.odt") Then
            '...
        End If
    

Files

Returnerer ei null-basert matrise av filene som er lagra i ei gjeve mappe. Kvart element i matrisa er ein streng som inneheld full sti og filnamnet.

Viss FolderName ikkje finst vert det sett eit unnatak.

Den resulterande lista kan filtrerast med jokerteikn.

Syntaks:


        FSO.Files(FolderName As String, [Filter As String]) As Variant
    

Parametrar:

FolderName: A string representing a folder. The folder must exist. FolderName must not designate a file.

Filter: A string containing wildcards ("?" and "*") that will be applied to the resulting list of files (default = "").

Eksempel:


        Dim filesList As Variant, file As String
        FSO.FileNaming = "SYS"
        filesList = FSO.Files("/home/user/", "*.txt")
        For Each file In filesList
            ' ...
        Next file
    

FolderExists

Returns True if the specified FolderName is valid and exists, otherwise the method returns False.

If the FolderName parameter is actually an existing file name, the method returns False.

Syntaks:


        FSO.FolderExists(FolderName As String) As Boolean
    

Parametrar:

FolderName: A string representing the folder to be tested.

Eksempel:


        FSO.FolderNaming = "SYS"
        If FSO.FolderExists("C:\Documents\Thesis") Then
            '...
        End If
    

GetBaseName

Returns the BaseName (equal to the last component) of a folder or file name, without its extension.

The method does not check if the specified file or folder exists.

Syntaks:


        FSO.GetBaseName(FileName As String) As String
    

Parametrar:

FileName: A string representing the file name and its path.

Eksempel:


        ' If the input parameter is a folder, it returns the last component of the path
        MsgBox FSO.GetBaseName("/home/user/Documents") ' "Documents"
        ' If the input parameter is a file, the method returns the file name without the extension and the path
        MsgBox FSO.GetBaseName("/home/user/Documents/my_file.ods") ' "my_file"
    

GetExtension

Returns the extension part of a file or folder name without the dot "." character.

The method does not check for the existence of the specified file or folder.

If this method is applied to a folder name or to a file without an extension, then an empty string is returned.

Syntaks:


        FSO.GetExtension(FileName As String) As String
    

Parametrar:

FileName: A string representing the file name and its path.

Eksempel:


        FSO.FileNaming = "SYS"
        MsgBox FSO.GetExtension("C:\Windows\Notepad.exe")  ' "exe"
    

GetFileLen

The builtin FileLen Basic function returns the number of bytes contained in a file as a Long value, i.e. up to 2GB.

The GetFileLen method can handle files with much larger sizes by returning a Currency value.

Syntaks:


        FSO.GetFileLen(FileName As String) As Currency
    

Parametrar:

FileName: A string representing an existing file.

Eksempel:


        Dim a As Currency
        FSO.FileNaming = "SYS"
        a = FSO.GetFileLen("C:\pagefile.sys")
    

GetFileModified

Returns the last modified date of a given file.

Syntaks:


        FSO.GetFileModified(FileName As String) As Date
    

Parametrar:

FileName: A string representing an existing file.

Eksempel:


        Dim a As Date
        FSO.FileNaming = "SYS"
        a = FSO.GetFileModified("C:\Documents\my_file.odt")
    

GetName

Returns the last component of a file or folder name in native operating system format.

The method does not check if the specified file or folder exists.

Syntaks:


        FSO.GetName(FileName As String) As String
    

Parametrar:

FileName: A string representing the file name and its path.

Eksempel:


        Dim a As String
        FSO.FileNaming = "SYS"
        a = FSO.GetName("C:\Windows\Notepad.exe"  ' Notepad.exe
    

GetParentFolderName

Returns a string containing the name of the parent folder of a specified file or folder name.

The method does not check if the specified file or folder exists.

Syntaks:


        FSO.GetParentFolderName(FileName As String) As String
    

Parametrar:

FileName: A string with the file or folder name to be analyzed.

Eksempel:


        Dim a As String
        FSO.FileNaming = "SYS"
        a = FSO.GetParentFolderName("C:\Windows\Notepad.exe"  ' C:\Windows\
    

GetTempName

Returns a randomly generated temporary file name that is useful for performing operations that require a temporary file.

The returned file name does not have any suffix. The folder part of the returned string is the system's temporary folder.

The method does not create the temporary file.

Syntaks:


        FSO.GetTempName() As String
    

Eksempel:


        Dim a As String
        FSO.FolderNaming = "SYS"
        a = FSO.GetTempName() & ".txt"
        ' "/tmp/SF_574068.txt"
    

HashFile

Hash functions are used by some cryptographic algorithms, in digital signatures, message authentication codes, fraud detection, fingerprints, checksums (message integrity check), hash tables, password storage and much more.

The HashFile method returns the result of a hash function, applied on a given file and using a specified algorithm. The returned value is a string of lower-case hexadecimal digits.

The hash algorithms supported are: MD5, SHA1, SHA224, SHA256, SHA384 and SHA512.

Syntaks:


        FSO.HashFile(FileName As String, Algorithm As String) As String
    

Parametrar:

FileName: A string representing an existing file.

Algorithm: One of the supported algorithms.

Eksempel:


        FSO.FileNaming = "SYS"
        MsgBox FSO.HashFile("C:\pagefile.sys", "MD5")
    

MoveFile

Moves one or more files from one location to another. Returns True if at least one file has been moved or False if an error occurred.

An error will also occur if the Source parameter uses wildcard characters and does not match any files.

The method stops immediately after it encounters an error. The method does not roll back nor does it undo changes made before the error occurred.

Syntaks:


        FSO.MoveFile(Source As String, Destination As String) As Boolean
    

Parametrar:

Source: It can be a FileName or NamePattern to designate one or more files to be moved.

Destination: If Source is a FileName then this parameter indicates the new path and file name of the moved file.

If the move operation involves multiple files, then Destination must be a folder name. If it does not exist, it is created.

If Source and Destination have the same parent folder, the method will rename the Source.

Wildcard characters are not allowed in Destination.

Eksempel:


        Dim a As String
        FSO.FileNaming = "SYS"
        FSO.MoveFile("C:\Temp1\*.*", "C:\Temp2\")
        ' Only files are moved, subfolders are not
    

MoveFolder

Flyttar éi eller fleire mapper frå éin stad til ein annan. Returnerer Sann viss minst éi mappe er flytt, eller Usann viss det skjedde ein feil.

Det oppstår også ein feil viss parameteren Source brukar jokerteikn og det ikkje er samsvar med mappene.

Metoden stoppar straks når han møter ein feil. Metoden rullar ikkje tilbake, og angrar heller ikkje endringar som vart gjort før feilen oppstod.

Syntaks:


        FSO.MoveFolder(Source As String, Destination As String) As Boolean
    

Parametrar:

Source: Kan vera eit FolderName eller eit NamePattern som peikar på éi eller fleire mapper som skal flyttast.

Destination: Viss flyttinga involverer ei enkelt mappe, er Destination namnet og stien til den flytte mappa, som ikkje må finnast frå før.

Viss fleire mapper vert flytte, bestemmer Destination kvar mappene i Source skal flyttast til. Viss Destination ikkje finst frå før, vert det laga.

Det er ikkje lov å bruka jokerteikn i Destination.

Eksempel:


        Dim a As String
        FSO.FileNaming = "SYS"
        FSO.MoveFolder("C:\Temp1\*", "C:\Temp2\")
    

OpenTextFile

Opnar ei fil og returnerer objektet TextStream som kan brukast til å lesa frå, skriva til eller leggja til fila.

Merk at metoden ikkje kontrollerer pm den gjevne fila faktisk er ei tekstfil.

Metoden returnerer objektet Null viss det går feil.

Syntaks:


        FSO.OpenTextFile(FileName As String, [IOMode As Integer], [Create As Boolean], [Encoding As String]) As Object
    

Parametrar:

FileName: Identifiserer fila som skal opnast.

IOMode: Indikerer input/output modus. Det kan vera éin av dei tre konstantane: FSO.ForReading (standard), FSO.ForWriting eller FSO.ForAppending.

Create: Boolsk verdi som indikerer om ei ny fil kan lagast viss den gjevne fila ikkje finst frå før.

Encoding: Teiknsettet som skal brukast. Standard = «UTF-8».

Eksempel:


        Dim myFile As Object
        FSO.FileNaming = "SYS"
        Set myFile = FSO.OpenTextFile("C:\Temp\ThisFile.txt", FSO.ForReading)
        If Not IsNull(myFile) Then
            ' ...
        End If
    

PickFile

Opnar eit dialogvindauge for å lagra og opna filer.

Viss SAVE-modus er sett og den valde fila finst frå før, vert det vist ei åtvaring.

Syntaks:


      FSO.PickFile([DefaultFile As String], [Mode As String], [Filter As String]) As String
    

Parametrar:

DefaultFile: Dette argumentet er ein streng som er sett saman av eit mappe- og eit filnamn:

Mode: OPEN (inndatafil) eller SAVE (utdatafil). Standardverdien er OPEN.

Filter: Namneutvidinga på dei filene som vert viste når dialogvindauget er ope (standard=inkje filter).

Eksempel:


        Dim a As Variant
        FSO.FileNaming = "SYS"
        a = FSO.PickFile("C:\", "OPEN", "txt")
        ' Berre *.txt-filer vert viste
    

PickFolder

Opnar eit dialogfelt for å velja ei mappe.

Syntaks:


        FSO.PickFolder([DefaultFolder As String], [FreeText As String]) As String
    

Parametrar:

DefaultFolder: A string containing the folder name that will be displayed when the dialog is opened (default = the last selected folder).

FreeText: Text to display in the dialog (default = "").

Eksempel:


        Dim a As Variant
        FSO.FileNaming = "SYS"
        a = FSO.PickFolder("C:\", "Choose a folder or press Cancel")
    

SubFolders

Returns a zero-based array of the folders stored in a given FolderName.

The list may be filtered with wildcards.

Syntaks:


        FSO.SubFolders(FolderName As String, [Filter As String]) As Variant
    

Parametrar:

FolderName: A string representing a folder. The folder must exist. FolderName must not designate a file.

Filter: A string containing wildcards ("?" and "*") that will be applied to the resulting list of folders (default = "").

Eksempel:


        Dim folderList As Variant, folder As String
        FSO.FileNaming = "SYS"
        folderList = FSO.SubFolders("/home/user/")
        For Each folder In folderList
            ' ...
        Next folder
    
warning

Alle Basic-rutinane og -identifikatorane i ScriptForge som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje tenkt brukte i Basic-makroar.