Inhoud

# ScriptForge.FileSystem-service

De service FileSystem bevat routines om met bestanden en mappen te werken. Enkele voorbeelden van de functies in deze service:

- Testen of een bestand of map bestaat.

- Mappen en bestanden aanmaken en verwijderen.

- Dialoogvensters starten om bestanden te openen of op te slaan.

- Toegang tot een lijst van bestanden in een map, enz.

De methodes in de service FileSystem zijn grotendeels gebaseerd op de XSimpleFileAccess UNO interface.

## Definities

In onderstaande tabel staan de belangrijkste parameters die door de methodes in service FileSystem worden gebruikt.

Parameter | Beschrijving
--- | ---
FileName | De volledige naam van het bestand inclusief het pad, zonder padscheidingsteken aan het eind.
FolderName | De volledige naam van de map inclusief het pad. Kan met of zonder padscheidingsteken aan het eind zijn.
Name | Het laatste deel van de Folder Name of de File Name inclusief de extensie. Deze parameter is altijd in het eigen formaat van het besturingssysteem.
BaseName | Het laatste deel van de Folder Name of File Name zonder de extensie.

NamePattern

Elk van de bovenstaande namen met jokers in het laatste deel. De toegestane jokers zijn:

- "?" staat voor één willekeurig teken

- "*" staat voor geen, één of meer tekens

Met de service FileSystem service is het mogelijk om meerdere bestanden tegelijk te bewerken. Door een naampatroon te gebruiken kan in een gebruikersscript meerder bestanden worden gekopieerd, verplaatst of verwijderd. De interne Basic-methoden werken altijd maar op één bestand.

### Bestandsnaamnotatie

De notatie die wordt gebruikt om bestands- en mapnamen uit te drukken, zowel voor argumenten als geretourneerde waarden, wordt gedefinieerd door de eigenschap FileNaming van de service FileSystem.

In het kort zijn de mogelijke weergavetypen "URL" (URL-bestandsnotatie), "SYS" (besturingssysteemnotatie) en "ANY" (standaard). Zie hieronder voor meer informatie.

Een voorbeeld van de URL-notatie is file:///C:/Documents/my_file.odt. Overweeg waar mogelijk de URL-notatie te gebruiken, omdat dit een meer overdraagbaar alternatief is.

Het gebruik van de sneltoets "~" (tilde), die gebruikelijk is in op Linux gebaseerde besturingssystemen, wordt niet ondersteund om een pad naar een map en bestandsnaam uit te drukken. Gebruik in plaats van "~/Documents/my_file.odt" het volledige pad "/home/user/Documents/my_file.odt".

## Service aanroep

In deze code wordt de service FileSystem aangeroepen. In dit voorbeeld, met de methode BuildPath.

##### In BASIC

          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
          Dim FSO As Object
          Set FSO = CreateScriptService("FileSystem")
          FSO.BuildPath(...)

##### In Python

          from scriptforge import CreateScriptService
          fs = CreateScriptService("FileSystem")
          fs.BuildPath(...)

## Toegang krijgen tot het virtuele bestandssysteem van een document

LibreOffice-documentbestanden zijn gecomprimeerde ZIP-bestanden die de bestanden en mappen bevatten die de daadwerkelijke documentinhoud vertegenwoordigen. Terwijl het document geopend is, is het mogelijk toegang te krijgen tot dit virtuele bestandssysteem, de structuur ervan te verkennen en bestanden en mappen te lezen en aan te maken.

Het volgende voorbeeld laat zien hoe u een tekstbestand met de naam myFile.txt maakt en dit opslaat in het virtuele bestandssysteem van het document.

##### In BASIC

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim oDoc As Object, fso As Object, oFile As Object
        Dim sRoot, sFile, sMyDir
        Set fso = CreateScriptService("FileSystem")
        Set oDoc = CreateScriptService("Document", ThisComponent)
        ' Haalt de URL-padnotatie op naar de hoofdmap van het virtuele bestandssysteem
        sRoot = oDoc.FileSystem()
        sMyDir = sRoot & "myDir"
        ' Creëert de map "myDir" als deze niet bestaat
        If Not fso.FolderExists(sMyDir) Then
            fso.CreateFolder(sMyDir)
        End If
        ' Creëert het bestand en schrijft er wat tekst in
        sFile = fso.BuildPath(sMyDir, "myFile.txt")
        oFile = fso.CreateTextFile(sFile)
        oFile.WriteLine("Hello!")
        oFile.CloseFile()

##### In Python

        from scriptforge import CreateScriptService
        bas = CreateScriptService("Basic")
        doc = CreateScriptService("Document", bas.ThisComponent)
        fso = CreateScriptService("FileSystem")
        sRoot = doc.FileSystem
        sMyDir = sRoot + "myDir"
        if not fso.FolderExists(sMyDir):
            fso.CreateFolder(sMyDir)
        sFile = fso.BuildPath(sMyDir, "myFile.txt")
        oFile = fso.CreateTextFile(sFile)
        oFile.WriteLine("Hello!")
        oFile.CloseFile()

Over het algemeen kunnen alle methoden van de service FileSystem worden gebruikt om bestanden in het virtuele bestandssysteem van het document te manipuleren. De volgende beperkingen zijn echter van toepassing:

- Het is niet mogelijk om bestanden in de hoofdmap aan te maken. Gebruik bestaande submappen of maak nieuwe mappen om bestanden in het bestandssysteem van het document op te slaan.

- De notatie FileNaming wordt altijd beschouwd als "URL".

- De methoden CompareFiles, GetFileModified, HashFile, PickFile en PickFolder zijn niet van toepassing.

- De methode GetFileLen retourneert altijd nul.

- De methode Normalize retourneert de invoertekenreeks altijd ongewijzigd.

Het pad naar het virtuele bestandssysteem is geen fysiek adres op de harde schijf van de computer. Het is alleen toegankelijk vanuit een LibreOffice-script en het bestaat alleen als het documentbestand geopend is.

## Eigenschappen

Naam | AlleenLezen | Type | Beschrijving
--- | --- | --- | ---

FileNaming

Nee

String

Stelt of retourneert de huidige notatie van bestanden en mappen, ofwel "ANY", "URL" of "SYS":

- "ANY": (standaard) de methoden van de service FileSystem accepteren zowel de URL als de notatie van het huidige besturingssysteem voor invoerargumenten, maar retourneren altijd URL-tekenreeksen.

- "URL": de methoden van de service FileSystem verwachten URL-notatie voor invoerargumenten en geretourneerde URL-tekenreeksen.

- "SYS": de methoden van de service FileSystem verwacht en retourneert de notatie van het huidige besturingssysteem voor invoerargumenten.

Eenmaal ingesteld, blijft de eigenschap FileNaming ongewijzigd tot het einde van de LibreOffice-sessie of totdat deze opnieuw wordt ingesteld.

ConfigFolder | Ja | String | Retourneert de configuratiemap van LibreOffice.
ExtensionsFolder | Ja | String | Retourneert de map waarin extensies zijn geïnstalleerd.
HomeFolder | Ja | String | Retourneert de basismap van de gebruiker.
InstallFolder | Ja | String | Retourneert de installatiemap van LibreOffice.
TemplatesFolder | Ja | String | Retourneert de map met de systeemsjablonenbestanden.
TemporaryFolder | Ja | String | Retourneert de map met tijdelijke bestanden die is gedefinieerd in de padinstellingen van LibreOffice.
UserTemplatesFolder | Ja | String | Retourneert de map met de door de gebruiker gedefinieerde sjabloonbestanden.

Lijst met methoden in de service FileSystem
BuildPath CompareFiles CopyFile CopyFolder CreateFolder CreateTextFile DeleteFile DeleteFolder ExtensionFolder | FileExists Files FolderExists GetBaseName GetExtension GetFileLen GetFileModified GetName GetParentFolderName | GetTempName HashFile MoveFile MoveFolder Normalize OpenTextFile PickFile PickFolder SubFolders

## BuildPath

Voegt een mappad en de naam van een bestand samen en retourneert de volledige bestandsnaam met een geldig padscheidingsteken. Het padscheidingsteken wordt alleen toegevoegd als dat nodig is.

### Syntaxis:

svc.BuildPath(foldername: str, name: str): str

### Parameters:

foldername: Het pad waarmee name wordt gecombineerd. Het opgegeven pad hoeft geen bestaande map te zijn.

name: De naam van het bestand dat moet worden toegevoegd aan foldername. Deze parameter gebruikt de notatie van het huidige besturingssysteem.

### Voorbeeld:

##### In BASIC

          Dim FSO as Object
          Set FSO = CreateScriptService("FileSystem")
          Dim aFileName as String
          FSO.FileNaming = "URL"
          aFileName = FSO.BuildPath("file:///home/user", "sample file.odt")
          ' file:///home/user/sample%20file.odt

##### In Python

          fs = CreateScriptService("FileSystem")
          fs.FileNaming = "URL"
          aFileName = fs.BuildPath("file:///home/user", "sample file.odt")
          # file:///home/user/sample%20file.odt

## CompareFiles

Vergelijkt twee bestanden en retourneert True wanneer ze identiek lijken.

Afhankelijk van de waarde van het argument comparecontents, kan de vergelijking tussen beide bestanden ofwel alleen gebaseerd zijn op bestandskenmerken (zoals de laatste wijzigingsdatum), ofwel op de inhoud van het bestand.

### Syntaxis:

svc.CompareFiles(filename1: str, filename2: str, comparecontents: bool = False): bool

### Parameters:

filename1, filename2: De te vergelijken bestanden.

comparecontents: Bij True wordt de inhoud van de bestanden vergeleken (standaard = False).

### Voorbeeld:

##### In BASIC

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

##### In Python

          fs.FileNaming = "SYS"
          if fs.CompareFiles(r"C:\myFile1.txt", r"C:\myFile2.txt", comparecontents = False):
              # ...

## CopyFile

Kopieert een of meer bestanden van de ene locatie naar de andere. Retourneert True als ten minste één bestand is gekopieerd of False als er een fout is opgetreden.

Er treedt ook een fout op als de parameter source jokertekens gebruikt en met geen enkel bestand overeenkomt.

De methode stopt onmiddellijk nadat er een fout is opgetreden. De methode wordt niet teruggedraaid en maakt ook geen wijzigingen ongedaan die zijn aangebracht voordat de fout optrad.

### Syntaxis:

svc.CopyFile(source: str, destination: str, overwrite: bool = True): bool

### Parameters:

source: Het kan een FileName of een NamePattern zijn die aangeeft dat een of meer bestanden moeten worden gekopieerd.

destination: Het kan ofwel een FileName zijn die aangeeft waar het enkele source-bestand moet worden gekopieerd, of een FolderName waarin de meerdere bestanden van source moeten worden gekopieerd.

- Als destination niet bestaat, wordt deze aangemaakt.

- Jokertekens zijn niet toegestaan in destination.

overwrite: Indien True (standaard) mogen bestanden worden overschreven. Deze methode zal mislukken als de destination alleen-lezen is, ongeacht de gespecificeerde waarde in overwrite.

### Voorbeeld:

In de onderstaande voorbeelden wordt met de eerste regel één bestand gekopieerd, met de tweede regel worden er mogelijk meerdere bestanden gekopieerd omdat daar jokertekens zijn gebruikt.

##### In BASIC

          FSO.CopyFile("C:\Documents\my_file.odt", "C:\Temp\copied_file.odt")
          FSO.CopyFile("C:\Documents\*.*", "C:\Temp\", Overwrite := False)

##### In Python

          fs.CopyFile(r"C:\Documents\my_file.odt", r"C:\Temp\copied_file.odt")
          fs.CopyFile(r"C:\Documents\*.*", r"C:\Temp", overwrite = False)

Houd er rekening mee dat submappen en hun inhoud niet worden gekopieerd wanneer jokertekens worden gebruikt in het argument source.

## CopyFolder

Kopieert een of meer mappen van de ene locatie naar de andere. Retourneert True als ten minste één map is gekopieerd of False als er een fout is opgetreden.

Er treedt ook een fout op als de parameter source jokertekens gebruikt en met geen enkele map overeenkomt.

De methode stopt onmiddellijk nadat er een fout is opgetreden. De methode wordt niet teruggedraaid en maakt ook geen wijzigingen ongedaan die zijn aangebracht voordat de fout optrad.

### Syntaxis:

svc.CopyFolder(source: str, destination: str, overwrite: bool = True): bool

### Parameters:

source: Het kan een FolderName of een NamePattern zijn die aangeeft dat een of meer mappen moeten worden gekopieerd.

destination: Specificeert de FolderName waarnaar de enkele of meerdere mappen die zijn gedefinieerd in source moeten worden gekopieerd.

- Als destination niet bestaat, wordt deze aangemaakt.

- Jokertekens zijn niet toegestaan in destination.

overwrite: Indien True (standaard), kunnen bestanden worden overschreven. De methode zal mislukken als destination alleen-lezen is, ongeacht de waarde die is opgegeven in overwrite.

### Voorbeeld:

In de onderstaande voorbeelden zijn alle bestanden, mappen en submappen gekopieerd.

          ' Basic
          FSO.CopyFolder("C:\Documents\*", "C:\Temp\", Overwrite := False)

          # Python
          fs.CopyFolder(r"C:\Documents\*", r"C:\Temp", overwrite = False)

## CreateFolder

Creëert de opgegeven FolderName. Retourneert True als de map met succes kon worden gemaakt.

Als de opgegeven map een bovenliggende map heeft die niet bestaat, wordt deze gemaakt.

### Syntaxis:

svc.CreateFolder(foldername: str): bool

### Parameters:

foldername: Een tekenreeks die de map vertegenwoordigt die moet worden gemaakt. Als de map al bestaat, wordt er een uitzondering gemaakt.

### Voorbeeld:

          ' Basic
          FSO.CreateFolder("C:\NewFolder")

          # Python
          fs.CreateFolder(r"C:\NewFolder")

## CreateTextFile

Creëert een gespecificeerd bestand en retourneert een service-instantie TextStream die kan worden gebruikt om naar het bestand te schrijven.

De methode retourneert een Null-object als er een fout is opgetreden.

### Syntaxis:

svc.CreateTextFile(filename: str, overwrite: bool = True, encoding: str = 'UTF-8'): svc

### Parameters:

filename: De naam van het aan te maken bestand.

overwrite: Booleaanse waarde die bepaalt of filename kan worden overschreven (standaard = True).

encoding: De tekenset die moet worden gebruikt. De standaardcodering is "UTF-8".

### Voorbeeld:

##### In BASIC

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

##### In Python

          fs.FileNaming = "SYS"
          myFile = fs.CreateTextFile(r"C:\Temp\ThisFile.txt", overwrite = True)

Ga voor meer informatie over de namen van karaktersets naar IANA's Character Set-pagina. Houd er rekening mee dat LibreOffice niet alle bestaande tekensets implementeert.

## DeleteFile

Verwijdert een of meer bestanden. Retourneert True als ten minste één bestand is verwijderd of False als er een fout is opgetreden.

Er zal ook een fout optreden als de parameter filename jokertekens gebruikt en met geen enkel bestand overeenkomt.

De te verwijderen bestanden mogen niet alleen-lezen zijn.

De methode stopt onmiddellijk nadat er een fout is opgetreden. De methode wordt niet teruggedraaid en maakt ook geen wijzigingen ongedaan die zijn aangebracht voordat de fout optrad.

### Syntaxis:

svc.DeleteFile(filename: str): bool

### Parameters:

filename: Het kan een filename of een NamePattern zijn die het te verwijderen bestand (of bestanden) aangeeft.

### Voorbeeld:

In de onderstaande voorbeelden worden alleen bestanden verwijderd, submappen niet.

          ' Basic
          FSO.DeleteFile("C:\Temp\*.docx")

          # Python
          fs.DeleteFile(r"C:\Temp\*.docx")

## DeleteFolder

Verwijdert een of meer mappen. Retourneert True als ten minste één map is verwijderd of False als er een fout is opgetreden.

Er treedt ook een fout op als de parameter foldername jokertekens gebruikt en met geen enkele map overeenkomt.

De te verwijderen mappen mogen niet alleen-lezen zijn.

De methode stopt onmiddellijk nadat er een fout is opgetreden. De methode wordt niet teruggedraaid en maakt ook geen wijzigingen ongedaan die zijn aangebracht voordat de fout optrad.

### Syntaxis:

svc.DeleteFolder(foldername: str): bool

### Parameters:

foldername: Het kan een FolderName of een NamePattern zijn die aangeeft dat een of meer mappen moeten worden verwijderd.

### Voorbeeld:

In de onderstaande voorbeelden worden alleen mappen en hun inhoud verwijderd. Bestanden in de bovenliggende map "C:\Temp" worden niet verwijderd.

          ' Basic
          FSO.DeleteFolder("C:\Temp\*")

          # Python
          fs.DeleteFolder(r"C:\Temp\*")

## ExtensionFolder

Retourneert een tekenreeks met de map waarin het opgegeven extensiepakket is geïnstalleerd.

De huidige waarde van de eigenschap SF_FileSystem.FileNaming wordt gebruikt om de notatie van de geretourneerde tekenreeks te bepalen.

Gebruik de eigenschap Extensions van het Platform service om een tekenreeksmatrix te krijgen met de ID's van alle geïnstalleerde extensies.

### Syntaxis:

svc.ExtensionFolder(extension: str): str

### Parameters:

extension: Een tekenreeks met de ID van de extensie. Als de extensie niet is geïnstalleerd, wordt een uitzondering gemaakt.

### Voorbeeld:

De onderstaande voorbeelden in Basic en Python retourneren de map waarin de APSO-extensie is geïnstalleerd.

          ' Basic
          sFolder = FSO.ExtensionFolder("apso.python.script.organizer")
          ' file:///home/username/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu10833wz3u2i.tmp_/apso_1_2_7.oxt

          # Python
          sFolder = fs.ExtensionFolder("apso.python.script.organizer")

## FileExists

Retourneert True als een gegeven bestandsnaam geldig is en bestaat, anders retourneert de methode False.

Als de parameter filename daadwerkelijk een bestaande mapnaam is, retourneert de methode False.

### Syntaxis:

svc.FileExists(filename: str): bool

### Parameters:

filename: Een tekenreeks die het te testen bestand vertegenwoordigt.

### Voorbeeld:

##### In BASIC

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

##### In Python

          fs.FileNaming = "SYS"
          if fs.FileExists(r"C:\Documents\my_file.odt"):
              # ...

## Files

Retourneert een op nul gebaseerde matrix van de bestanden die zijn opgeslagen in een bepaalde map. Elk item in de matrix is een tekenreeks die het volledige pad en de bestandsnaam bevat.

Als het argument foldername een map specificeert die niet bestaat, wordt er een uitzondering gemaakt.

De resulterende lijst kan worden gefilterd met jokertekens.

### Syntaxis:

svc.Files(foldername: str, filter: str = '', includesubfolders: bool = False): str[0..*]

### Parameters:

foldername: Een tekenreeks die een map vertegenwoordigt. De map moet bestaan. Dit argument mag geen bestand aanduiden.

filter: Een tekenreeks met jokertekens ("?" en "*") die worden toegepast op de resulterende lijst met bestanden (standaard = "").

includesubfolders: Stel dit argument in op True om de inhoud van submappen op te nemen (standaard = False).

### Voorbeeld:

##### In BASIC

          Dim filesList As Variant, file As String
          FSO.FileNaming = "SYS"
          ' Retourneert alle bestanden die overeenkomen met het filter "*.txt", inclusief bestanden in submappen
          filesList = FSO.Files("/home/user/", "*.txt", IncludeSubfolders := True)
          For Each file In filesList
              ' ...
          Next file

##### In Python

          fs.FileNaming = "SYS"
          filesList = fs.Files("/home/user/", "*.txt", includesubfolders = True)
          for file in fileList:
              # ...

## FolderExists

Retourneert True als de opgegeven FolderName geldig is en bestaat, anders retourneert de methode False.

Als de parameter foldername daadwerkelijk een bestaande bestandsnaam is, retourneert de methode False.

### Syntaxis:

svc.FolderExists(foldername: str): bool

### Parameters:

foldername: Een tekenreeks die de map aangeeft die moet worden getest.

### Voorbeeld:

##### In BASIC

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

##### In Python

          fs.FileNaming = "SYS"
          if fs.FolderExists(r"C:\Documents\Thesis")
              # ...

## GetBaseName

Retourneert de BaseName (gelijk aan de laatste component) van een map- of bestandsnaam, zonder de extensie.

De methode controleert niet of het opgegeven bestand of de opgegeven map bestaat.

### Syntaxis:

svc.GetBaseName(filename: str): str

### Parameters:

filename: Een tekenreeks die de bestandsnaam en het pad vertegenwoordigt.

### Voorbeeld:

In de onderstaande voorbeelden komt de eerste GetBaseName-methodeaanroep overeen met een map, dus de functie retourneert de laatste component van het pad. De tweede aanroep krijgt een bestandsnaam als invoer, dus de naam van het bestand is geretourneerd zonder de extensie.

##### In BASIC

          MsgBox FSO.GetBaseName("/home/user/Documents") ' "Documents"
          MsgBox FSO.GetBaseName("/home/user/Documents/my_file.ods") ' "my_file"

##### In Python

          bas = CreateScriptService("Basic")
          bas.MsgBox(fs.GetBaseName("/home/user/Documents")) # "Documents"
          bas.MsgBox(fs.GetBaseName("/home/user/Documents/my_file.ods")) # "my_file"

## GetExtension

Retourneert het extensiegedeelte van een bestands- of mapnaam zonder de punt "." karakter.

De methode controleert niet op het bestaan van het opgegeven bestand of de opgegeven map.

Als deze methode wordt toegepast op een mapnaam of op een bestand zonder extensie, wordt een lege tekenreeks geretourneerd.

### Syntaxis:

svc.GetExtension(filename: str): str

### Parameters:

filename: Een tekenreeks die de bestandsnaam en het pad vertegenwoordigt.

### Voorbeeld:

          ' Basic
          ext = FSO.GetExtension("C:\Windows\Notepad.exe")  ' "exe"

          # Python
          ext = fs.GetExtension(r"C:\Windows\Notepad.exe")  # "exe"

## GetFileLen

De ingebouwde FileLen Basic functie retourneert het aantal bytes in een bestand als een Long waarde, d.w.z. tot 2GB.

De GetFileLen-methode kan bestanden met veel grotere formaten verwerken door een Currency-waarde te retourneren.

### Syntaxis:

svc.GetFileLen(filename: str): num

### Parameters:

filename: Een tekenreeks die een bestaand bestand vertegenwoordigt.

### Voorbeeld:

##### In BASIC

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

##### In Python

          fs.FileNaming = "SYS"
          fLen = fs.GetFileLen(r"C:\pagefile.sys")

## GetFileModified

Retourneert de laatste wijzigingsdatum van een bepaald bestand.

### Syntaxis:

svc.GetFileModified(filename: str): datetime

### Parameters:

filename: Een tekenreeks die een bestaand bestand vertegenwoordigt.

### Voorbeeld:

##### In BASIC

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

##### In Python

          fs.FileNaming = "SYS"
          aDate = FSO.GetFileModified(r"C:\Documents\my_file.odt")

## GetName

Retourneert het laatste onderdeel van een bestands- of mapnaam in de oorspronkelijke besturingssysteemindeling.

De methode controleert niet of het opgegeven bestand of de opgegeven map bestaat.

### Syntaxis:

svc.GetName(filename: str): str

### Parameters:

filename: Een tekenreeks die de bestandsnaam en het pad vertegenwoordigt.

### Voorbeeld:

          ' Basic
          a = FSO.GetName("C:\Windows\Notepad.exe")  ' Notepad.exe

          # Python
          a = fs.GetName(r"C:\Windows\Notepad.exe")  # Notepad.exe

## GetParentFolderName

Retourneert een tekenreeks met de naam van de bovenliggende map van een opgegeven bestands- of mapnaam.

De methode controleert niet of het opgegeven bestand of de opgegeven map bestaat.

### Syntaxis:

svc.GetParentFolderName(filename: str): str

### Parameters:

filename: Een tekenreeks met de bestands- of mapnaam die moet worden geanalyseerd.

### Voorbeeld:

          ' Basic
          a = FSO.GetParentFolderName("C:\Windows\Notepad.exe")  ' C:\Windows\

          # Python
          a = fs.GetParentFolderName(r"C:\Windows\Notepad.exe")  # C:\Windows\

## GetTempName

Retourneert een willekeurig gegenereerde tijdelijke bestandsnaam die handig is voor het uitvoeren van bewerkingen waarvoor een tijdelijk bestand nodig is.

Standaard heeft de geretourneerde bestandsnaam geen extensie. Gebruik de parameter extension om de extensie op te geven van de bestandsnaam die moet worden gegenereerd.

Het mapgedeelte van de geretourneerde tekenreeks is de tijdelijke map van het systeem.

De methode maakt het tijdelijke bestand niet aan.

### Syntaxis:

svc.GetTempName(extension: str): str

### Parameters:

extension: De extensie van de tijdelijke bestandsnaam (standaard = "").

### Voorbeeld:

##### In BASIC

          Dim fName As String
          FSO.FileNaming = "SYS"
          fName = FSO.GetTempName(Extension := "txt")
          ' "/tmp/SF_574068.txt"

##### In Python

          fs.FileNaming = "SYS"
          fName = FSO.GetTempName(extension = "txt")
          # "/tmp/SF_574068.txt"

## HashFile

Hash-functies worden gebruikt door sommige cryptografische algoritmen, in digitale handtekeningen, berichtauthenticatiecodes, fraudedetectie, vingerafdrukken, checksums (berichtintegriteitscontrole), hashtabellen, wachtwoordopslag en nog veel meer.

De methode HashFile retourneert het resultaat van een hash-functie, toegepast op een bepaald bestand en met behulp van een gespecificeerd algoritme. De geretourneerde waarde is een reeks kleine hexadecimale cijfers.

De ondersteunde hash-algoritmen zijn: MD5, SHA1, SHA224, SHA256, SHA384 en SHA512.

### Syntaxis:

svc.HashFile(filename: str, algorithm: str): str

### Parameters:

filename: Een tekenreeks die een bestaand bestand vertegenwoordigt.

algorithm: Een van de ondersteunde algoritmen.

### Voorbeeld:

          ' Basic
          sHash = FSO.HashFile("C:\pagefile.sys", "MD5")

          # Python
          sHash = FSO.HashFile(r"C:\pagefile.sys", "MD5")

## MoveFile

Verplaatst een of meer bestanden van de ene naar de andere locatie. Retourneert True als ten minste één bestand is verplaatst of False als er een fout is opgetreden.

Er zal ook een fout optreden als de parameter source jokertekens gebruikt en met geen enkel bestand overeenkomt.

De methode stopt onmiddellijk nadat er een fout is opgetreden. De methode wordt niet teruggedraaid en maakt ook geen wijzigingen ongedaan die zijn aangebracht voordat de fout optrad.

### Syntaxis:

svc.MoveFile(source: str, destination: str): bool

### Parameters:

source: Het kan een FileName of NamePattern zijn om een of meer bestanden aan te duiden die moeten worden verplaatst.

destination: Als source een FileName is, dan geeft deze parameter het nieuwe pad en de nieuwe bestandsnaam van het verplaatste bestand aan.

Als de verplaatsingsbewerking meerdere bestanden omvat, moet destination een mapnaam zijn. Als het niet bestaat, wordt het gemaakt.

Als source en destination dezelfde bovenliggende map hebben, zal de methode de naam van de source wijzigen.

Jokertekens zijn niet toegestaan in destination.

### Voorbeeld:

In de volgende voorbeelden worden alleen bestanden verplaatst, submappen niet.

          ' Basic
          FSO.MoveFile("C:\Temp1\*.*", "C:\Temp2")

          # Python
          fs.MoveFile(r"C:\Temp1\*.*", r"C:\Temp2")

## MoveFolder

Verplaatst een of meer mappen van de ene naar de andere locatie. Retourneert True als ten minste één map is verplaatst of False als er een fout is opgetreden.

Er treedt ook een fout op als de parameter source jokertekens gebruikt en met geen enkele map overeenkomt.

De methode stopt onmiddellijk nadat er een fout is opgetreden. De methode wordt niet teruggedraaid en maakt ook geen wijzigingen ongedaan die zijn aangebracht voordat de fout optrad.

### Syntaxis:

svc.MoveFolder(source: str, destination: str): bool

### Parameters:

source: Het kan een FolderName of NamePattern zijn om een of meer mappen aan te duiden die moeten worden verplaatst.

destination: Als de verplaatsingsbewerking een enkele map betreft, dan is destination de naam en het pad van de verplaatste map en mag deze niet bestaan.

Als meerdere mappen worden verplaatst, geeft destination aan waar de mappen in source naartoe worden verplaatst. Als destination niet bestaat, wordt deze aangemaakt.

Jokertekens zijn niet toegestaan in destination.

### Voorbeeld:

          ' Basic
          FSO.MoveFolder("C:\Temp1\*", "C:\Temp2")

          # Python
          fs.MoveFolder(r"C:\Temp1\*", r"C:\Temp2")

## Normalize

Retourneert een tekenreeks met de genormaliseerde padnaam door overbodige scheidingstekens en verwijzingen naar een hoger niveau samen te vouwen.

Bijvoorbeeld de padnamen A//B, A/B/, A/./B en A/foo/ ../B zijn allemaal genormaliseerd naar A/B.

In Windows worden voorwaartse slashes "/" omgezet in achterwaartse slashes "\".

De huidige waarde van de eigenschap SF_FileSystem.FileNaming wordt gebruikt om de notatie van het argument filename te bepalen, evenals het formaat van de geretourneerde tekenreeks.

### Syntaxis:

svc.Normalize(filename: str): str

### Parameters:

bestandsnaam: een tekenreeks die een geldige padnaam vertegenwoordigt. Het bestand of de map die door dit argument wordt vertegenwoordigd, bestaat mogelijk niet.

### Voorbeeld:

##### In BASIC

        FSO.FileNaming = "URL"
        ' file:///home/user/Documents
        normPath = FSO.Normalize("file:///home/user/Documents/")
        ' file:///home/user/Documents
        normPath = FSO.Normalize("file:///home//user//Documents/")
        ' file:///home/user
        normPath = FSO.Normalize("file:///home//user//Documents/../")

##### In Python

        fs.FileNaming = "URL"
        normPath = fs.Normalize("file:///home/user/Documents/")
        normPath = fs.Normalize("file:///home//user//Documents/")
        normPath = fs.Normalize("file:///home//user//Documents/../")

## OpenTextFile

Opent een bestand en retourneert een TextStream-object dat kan worden gebruikt om te lezen van, te schrijven naar of toe te voegen aan het bestand.

Merk op dat de methode niet controleert of het gegeven bestand echt een tekstbestand is.

De methode retourneert een Null object (in Basic) of None (in Python) als er een fout is opgetreden.

### Syntaxis:

svc.OpenTextFile(filename: str, iomode: int = 1, create: bool = False, encoding: str = 'UTF-8'): svc

### Parameters:

filename: Identificeert het te openen bestand.

iomode:Geeft de invoer-/uitvoermodus aan. Het kan een van de drie constanten zijn: svc.ForReading (standaard), svc.ForWriting of svc.ForAppending.

create: Booleaanse waarde die aangeeft of een nieuw bestand kan worden gemaakt als de opgegeven filename niet bestaat:

- Indien True een nieuw bestand en de bovenliggende mappen worden gemaakt als ze niet bestaan;

- Indien False dan worden er geen nieuwe bestanden aangemaakt (standaard).

encoding: De tekenset die moet worden gebruikt. De standaardcodering is "UTF-8".

### Voorbeeld:

##### In BASIC

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

##### In Python

          fs.FileNaming = "SYS"
          myFile = fs.OpenTextFile(r"C:\Temp\ThisFile.txt", fs.ForReading)
          if myFile is not None:
              # ...

## PickFile

Opent een dialoogvenster om bestanden te openen of op te slaan.

Als de modus SAVE is ingesteld en het gekozen bestand bestaat, wordt een waarschuwingsbericht weergegeven.

### Syntaxis:

svc.PickFile(defaultfile: str ='', mode: str = 'OPEN', filter: str = ''): str

### Parameters:

defaultfile: Dit argument is een tekenreeks die bestaat uit een map en een bestandsnaam:

- Het mapgedeelte geeft de map aan die wordt weergegeven wanneer het dialoogvenster wordt geopend (standaard = de laatst geselecteerde map).

- Het bestandsgedeelte geeft het standaardbestand aan dat moet worden geopend of opgeslagen.

mode: Een tekenreekswaarde die "OPEN" (voor invoerbestanden) of "SAVE" (voor uitvoerbestanden) kan zijn. De standaardwaarde is "OPEN".

filter: De extensie van de bestanden die worden weergegeven wanneer het dialoogvenster wordt geopend (standaard = geen filter).

### Voorbeeld:

De onderstaande voorbeelden openen een bestandskiezer met het "txt"-filter toegepast.

          ' Basic
          aFile = FSO.PickFile("C:\Documents", "OPEN", "txt")

          # Python
          aFile = fs.PickFile(r"C:\Documents", "OPEN", "txt")

## PickFolder

Opent een dialoogvenster om een map te selecteren.

### Syntaxis:

svc.PickFolder(defaultfolder: str = '', freetext: str = ''): str

### Parameters:

defaultfolder: Een tekenreeks met de mapnaam die wordt weergegeven wanneer het dialoogvenster wordt geopend (standaard = de laatst geselecteerde map).

freetext: Tekst die in het dialoogvenster moet worden weergegeven (standaard = "").

### Voorbeeld:

          ' Basic
          aFolder = FSO.PickFolder("C:\Documenten", "Kies een map of druk op Annuleren")

          # Python
          aFolder = fs.PickFolder(r"C:\Documenten", "Kies een map of druk op Annuleren")

## SubFolders

Retourneert een op nul gebaseerde matrix van tekenreeksen die overeenkomen met de mappen die zijn opgeslagen in een gegeven foldername.

De lijst kan worden gefilterd met jokertekens.

### Syntaxis:

svc.SubFolders(foldername: str, filter: str = '', includesubfolders: bool = False): str[0..*]

### Parameters:

foldername: Een tekenreeks die een map vertegenwoordigt. De map moet bestaan. foldername mag geen bestand aanduiden.

filter: Een tekenreeks met jokertekens ("?" en "*") die worden toegepast op de resulterende lijst met mappen (standaard = "").

includesubfolders: Stel dit argument in op True om de inhoud van submappen op te nemen (standaard = False).

### Voorbeeld:

##### In BASIC

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

##### In Python

          fs.FileNaming = "SYS"
          folderList = fs.SubFolders("/home/user/")
          for folder in folderList:
              # ...

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.

Verwante onderwerpen

Service ScriptForge.TextStream

Functie Input [VBA]

Instructie Open