ScriptForge.FileSystem-service

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

note

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


tip

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.

tip

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.


warning

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:

note

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.

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)
    
note

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.

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)
    
note

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.

note

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


tip

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 "\".

note

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:

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:

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

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


Help ons, alstublieft!