Innhald
Innhaldsliste 🔎︎

# 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:

- Verifiserer om ei fil eller ei mappa finst.

- Laga og sletta filer og mapper.

- Starta dialogvindauge for å opna og gøyma filer.

- Få tilgang til lista over filer i ei mappe osv.

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

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.

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(...)

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.

- Viss FolderName ikkje finst vert det laga.

- Det er ikkje lov å bruka jokerteikn i Destination.

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.

- Viss FolderName ikkje finst vert det laga.

- Det er ikkje lov å bruka jokerteikn i Destination.

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)

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.

- Viss Sann vert ei fil og den overordna mappa for fila oppretta viss dei ikkje finst frå før.

- Viss Usann vert den nye fila ikkje oppretta (standard).

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:

- Mappedelen peikar på den mappa som vert vist når dialogvindauget vert opna (standard = den sist opna mappa).

- Fildelen peikar på den standardfila som skal opnast eller lagrast.

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

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.

Liknande emne

ScriptForge.TextStream service

Input Function

Open Statement