Inhalte

# Dienst ScriptForge.FileSystem

Der Dienst FileSystem enthält Routinen zur Handhabung von Dateien und Ordnern. Als erstes sind einige Beispiele für die Funktionen dieses Dienstes aufgeführt:

- Überprüfen, ob eine Datei oder ein Ordner vorhanden ist.

- Erstellen und löschen von Ordnern und Dateien.

- Starten von Dialogen zum Öffnen/Speichern von Dateien.

- Zugreifen auf die Liste der Dateien in einem Ordner und so weiter.

Die Methoden im Dienst FileSystem basieren hauptsächlich auf der UNO-Schnittstelle XSimpleFileAccess.

## Definitionen

Die folgende Tabelle listet die Hauptparameter auf, die von den meisten Methoden im Dienst FileSystem verwendet werden.

Parameter | Beschreibung
--- | ---
FileName | Der vollständige Name der Datei einschließlich des Pfads ohne Pfadtrennzeichen am Ende.
FolderName | Der vollständige Name des Ordners einschließlich des Pfads. Er kann das abschließende Pfadtrennzeichen enthalten oder nicht.
Name | Der letzte Bestandteil des Ordnernamens oder Dateinamens einschließlich seiner Erweiterung. Dieser Parameter wird immer im nativen Format des Betriebssystems ausgedrückt.
BaseName | Die letzte Bestandteil des Ordnernamens oder Dateinamens ohne seine Erweiterung.

NamePattern

Einer der oben genannten Namen, der in seiner letzten Komponente Platzhalter enthält. Zugelassene Platzhalter sind:

- "?" steht für ein beliebiges einzelnes Zeichen

- "*" steht für kein, ein oder mehrere Zeichen

Der Dienst FileSystem ermöglicht es, Operationen für mehrere Dateien gleichzeitig auszuführen. Durch die Verwendung von Namensmustern können Benutzerskripte mehrere Dateien kopieren, verschieben oder löschen. Umgekehrt können integrierte Basic-Methoden nur einzelne Dateien verarbeiten.

### Notation für Dateinamen

Die zum Ausdrücken von Datei- und Ordnernamen verwendete Notation, sowohl für Argumente als auch für zurückgegebene Werte, wird durch die Eigenschaft FileNaming des Dienstes FileSystem festgelegt.

Kurz gesagt sind die möglichen Darstellungstypen „URL“ (URL-Dateischreibweise), „SYS“ (Betriebssystem-Schreibweise) und „ANY“ (Standard). Weitere Informationen finden Sie unten.

Ein Beispiel für die URL-Notation ist file:///C:/Documents/my_file.odt. Erwägen Sie nach Möglichkeit die Verwendung der URL-Notation, da dies eine übertragbare Alternative ist.

Die Verwendung der Abkürzung „~“ (Tilde), die in Linux-basierten Betriebssystemen üblich ist, wird nicht unterstützt, um einen Pfad zu einem Ordner und Dateinamen auszudrücken. Verwenden Sie anstelle von "~/Dokumente/MeineDatei.odt" den vollständigen Pfad "/home/user/Dokumente/MeineDatei.odt".

## Dienstaufruf

Der folgende Code-Schnipsel ruft den Dienst FileSystem auf. Als Beispiel wurde die Methode BuildPath verwendet.

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

## Zugriff auf das virtuelle Dateisystem eines Dokuments

Dokumentdateien für LibreOffice sind komprimierte ZIP-Dateien, welche die Dateien und Ordner enthalten, die den eigentlichen Dokumentinhalt darstellen. Während das Dokument geöffnet ist, ist es möglich, auf dieses virtuelle Dateisystem zuzugreifen, seine Struktur zu erkunden sowie Dateien und Ordner zu lesen und zu erstellen.

Das folgende Beispiel zeigt, wie eine Textdatei mit dem Namen myFile.txt erstellt und im virtuellen Dateisystem des Dokuments gespeichert wird.

##### 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)
        ' Ruft die URL-Pfadnotation zum Stammverzeichnis des virtuellen Dateisystems ab
        sRoot = oDoc.FileSystem()
        sMyDir = sRoot & "myDir"
        ' Erstellt den Ordner "myDir", falls dieser nicht existiert
        If Not fso.FolderExists(sMyDir) Then
            fso.CreateFolder(sMyDir)
        End If
        ' Erstellt die Datei und schreibt Text hinein
        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()

Im Allgemeinen können alle Methoden des Dienstes FileSystem verwendet werden, um Dateien im virtuellen Dateisystem des Dokuments zu manipulieren. Es gelten jedoch folgende Einschränkungen:

- Es ist nicht möglich, Dateien im Stammordner zu erstellen. Verwenden Sie vorhandene Unterordner oder erstellen Sie neue Ordner, um Dateien im Dateisystem des Dokuments zu speichern.

- Die Notation FileNaming wird immer als „URL“ betrachtet.

- Die Methoden CompareFiles, GetFileModified, HashFile, PickFile und PickFolder sind nicht anwendbar.

- Die Methode GetFileLen gibt immer Null zurück.

- Die Methode Normalize gibt die Eingabezeichenfolge immer unverändert zurück.

Der Pfad zum virtuellen Dateisystem ist keine physische Adresse auf der Festplatte des Computers. Es kann nur aus einem Skript in LibreOffice heraus darauf zugegriffen werden und er existiert nur, während die Dokumentdatei geöffnet ist.

## Eigenschaften

Name | Schreibgeschützt | Typ | Beschreibung
--- | --- | --- | ---

FileNaming

Nein

String

Legt die aktuelle Datei- und Ordnernotation fest oder gibt sie zurück, entweder "ANY", "URL" oder "SYS":

- "ANY": (Standard) Die Methoden des Dienstes FileSystem akzeptieren sowohl die URL-Notation als auch die Notation des aktuellen Betriebssystems für Eingabeargumente, geben aber immer URL-Zeichenfolgen zurück.

- "URL": Die Methoden des Dienstes FileSystem erwarten die URL-Notation für Eingabeargumente und geben URL-Zeichenfolgen zurück.

- "SYS": Die Methoden des Dienstes FileSystem erwarten die Notation des aktuellen Betriebssystems für Eingabeargumente und geben diese auch zurück.

Einmal gesetzt, bleibt die Eigenschaft FileNaming unverändert, entweder bis zum Ende der LibreOffice-Sitzung oder bis sie erneut gesetzt wird.

ConfigFolder | Ja | String | Gibt den Konfigurationsordner von LibreOffice zurück.
ExtensionsFolder | Ja | String | Gibt den Ordner zurück, in dem Erweiterungen installiert sind.
HomeFolder | Ja | String | Gibt den Home-Ordner des Benutzers zurück.
InstallFolder | Ja | String | Gibt den Installationsordner von LibreOffice zurück.
TemplatesFolder | Ja | String | Gibt den Ordner zurück, der die System-Dateivorlagen enthält.
TemporaryFolder | Ja | String | Gibt den Ordner für temporäre Dateien zurück, der in den LibreOffice-Pfadeinstellungen definiert ist.
UserTemplatesFolder | Ja | String | Gibt den Ordner zurück, der die benutzerdefinierten Dokumentvorlagen-Dateien enthält.

Liste der Methoden im Dienst 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

Verbindet einen Ordnerpfad und den Namen einer Datei und gibt den vollständigen Dateinamen mit einem gültigen Pfadtrennzeichen zurück. Das Pfadtrennzeichen wird nur bei Bedarf hinzugefügt.

### Syntax:

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

### Parameter:

foldername: Der Pfad, mit dem name kombiniert wird. Der angegebene Pfad muss kein vorhandener Ordner sein.

name: Der Name der Datei, die an foldername angehängt werden soll. Dieser Parameter verwendet die Notation des aktuellen Betriebssystems.

### Beispiel:

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

Vergleicht zwei Dateien und gibt True zurück, wenn sie identisch zu sein scheinen.

Abhängig vom Wert des Arguments comparecontents kann der Vergleich zwischen beiden Dateien entweder nur auf Dateiattributen (wie dem letzten Änderungsdatum) oder auf dem Dateiinhalt basieren.

### Syntax:

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

### Parameter:

filename1, filename2: Die zu vergleichenden Dateien.

comparecontents: Bei True werden die Inhalte der Dateien verglichen (Standard = False).

### Beispiel:

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

Kopiert eine oder mehrere Dateien von einem Speicherort an einen anderen. Gibt True zurück, wenn mindestens eine Datei kopiert wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter source Platzhalter verwendet und mit keiner Datei übereinstimmt.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

### Syntax:

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

### Parameter:

source: Kann ein FileName oder ein NamePattern sein, der eine oder mehrere zu kopierende Dateien angibt.

destination: Kann entweder ein FileName sein, der festlegt, wohin die einzelne source kopiert werden soll, oder ein FolderName, in den mehrere Dateien aus source kopiert werden sollen.

- Wenn destination nicht existiert, wird es erstellt.

- Platzhalter sind in destination nicht zulässig.

overwrite: Wenn True (Standard), dürfen Dateien überschrieben werden. Die Methode schlägt fehl, wenn destination schreibgeschützt ist, unabhängig von dem in overwrite angegebenen Wert.

### Beispiel:

In den folgenden Beispielen kopiert die erste Zeile eine einzelne Datei, während die zweite Zeile mehrere Dateien mit Platzhaltern kopiert.

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

Beachten Sie, dass Unterordner und ihre Inhalte nicht kopiert werden, wenn Platzhalter im Argument source verwendet werden.

## CopyFolder

Kopiert einen oder mehrere Ordner von einem Speicherort an einen anderen. Gibt True zurück, wenn mindestens ein Ordner kopiert wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter source Platzhalter verwendet und mit keinem Ordner übereinstimmt.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

### Syntax:

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

### Parameter:

source: Kann ein FolderName oder ein NamePattern sein, der einen oder mehrere zu kopierende Ordner angibt.

destination: Legt FolderName fest, wohin die in source definierten einzelnen oder mehreren Ordner kopiert werden sollen.

- Wenn destination nicht existiert, wird es erstellt.

- Platzhalter sind in destination nicht zulässig.

overwrite: Wenn True (Standard), dürfen Dateien überschrieben werden. Die Methode schlägt fehl, wenn destination schreibgeschützt ist, unabhängig von dem in overwrite angegebenen Wert.

### Beispiel:

In den Beispielen unten werden alle Dateien, Ordner und Unterordner kopiert.

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

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

## CreateFolder

Erstellt den angegebenen FolderName. Gibt True zurück, wenn der Ordner erfolgreich erstellt werden konnte.

Wenn der angegebene Ordner einen nicht vorhandenen übergeordneten Ordner hat, wird er erstellt.

### Syntax:

svc.CreateFolder(foldername: str): bool

### Parameter:

foldername: Eine Zeichenfolge, die den zu erstellenden Ordner darstellt. Wenn der Ordner bereits vorhanden ist, wird eine Ausnahme ausgelöst.

### Beispiel:

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

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

## CreateTextFile

Erstellt eine angegebene Datei und gibt eine Dienstinstanz TextStream zurück, die zum Schreiben in die Datei verwendet werden kann.

Die Methode gibt ein Objekt Null zurück, wenn ein Fehler aufgetreten ist.

### Syntax:

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

### Parameter:

filename: Der Name der zu erstellenden Datei.

overwrite: Boolescher Wert, der bestimmt, ob filename überschrieben werden kann (Standard = True).

encoding: Der zu verwendende Zeichensatz. Die Standardcodierung ist "UTF-8".

### Beispiel:

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

Um mehr über die Namen von Zeichensätzen zu erfahren, besuchen Sie die Seite IANA's Character Set. Beachten Sie, dass LibreOffice nicht alle vorhandenen Zeichensätze implementiert.

## DeleteFile

Löscht eine oder mehrere Dateien. Gibt True zurück, wenn mindestens eine Datei gelöscht wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter filename Platzhalter verwendet und mit keiner Datei übereinstimmt.

Die zu löschenden Dateien dürfen nicht schreibgeschützt sein.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

### Syntax:

svc.DeleteFile(filename: str): bool

### Parameter:

filename: Kann ein FileName oder ein NamePattern sein, das eine oder mehrere zu löschende Dateien angibt.

### Beispiel:

In den folgenden Beispielen werden nur Dateien gelöscht, Unterordner werden nicht gelöscht.

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

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

## DeleteFolder

Löscht einen oder mehrere Ordner. Gibt True zurück, wenn mindestens ein Ordner gelöscht wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter foldername Platzhalter verwendet und mit keinem Ordner übereinstimmt.

Die zu löschenden Ordner dürfen nicht schreibgeschützt sein.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

### Syntax:

svc.DeleteFolder(foldername: str): bool

### Parameter:

foldername: Kann ein FolderName oder ein NamePattern sein, das einen oder mehrere zu löschende Ordner angibt.

### Beispiel:

In den folgenden Beispielen werden nur Ordner und deren Inhalt gelöscht. Dateien im übergeordneten Ordner "C:\Temp" werden nicht gelöscht.

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

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

## ExtensionFolder

Gibt eine Zeichenfolge zurück, die den Ordner enthält, in dem das angegebene Erweiterungspaket installiert ist.

Der aktuelle Wert der Eigenschaft SF_FileSystem.FileNaming wird verwendet, um die Notation der zurückgegebenen Zeichenfolge zu bestimmen.

Verwenden Sie die Eigenschaft Extensions aus dem Dienst Platform, um eine Zeichenfolgenmatrix mit den IDs aller installierten Erweiterungen zu erhalten.

### Syntax:

svc.ExtensionFolder(extension: str): str

### Parameter:

extension: Eine Zeichenfolge mit der ID der Erweiterung. Wenn die Erweiterung nicht installiert ist, wird eine Ausnahme ausgelöst.

### Beispiel:

Die folgenden Beispiele in Basic und Python geben den Ordner zurück, in dem die APSO-Erweiterung installiert ist.

          ' 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

Gibt True zurück, wenn ein gegebener Dateiname gültig ist und existiert, andernfalls gibt die Methode False zurück.

Wenn der Parameter filename tatsächlich ein vorhandener Ordnername ist, gibt die Methode False zurück.

### Syntax:

svc.FileExists(filename: str): bool

### Parameter:

filename: Eine Zeichenfolge, welche die zu testende Datei darstellt.

### Beispiel:

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

Gibt eine nullbasierte Matrix (BASIC) oder ein Tupel (Python) der in einem bestimmten Ordner gespeicherten Dateien zurück. Jeder Eintrag in der Matrix oder im Tupel ist eine Zeichenfolge mit dem vollständigen Pfad und Dateinamen.

Wenn das Argument foldername einen Ordner festlegt, der nicht existiert, wird eine Ausnahme ausgelöst.

Die resultierende Liste kann mit Platzhaltern gefiltert werden.

### Syntax:

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

### Parameter:

foldername: Eine Zeichenfolge, die einen Ordner darstellt. Der Ordner muss vorhanden sein. Dieses Argument darf keine Datei bezeichnen.

filter: Eine Zeichenfolge mit Platzhaltern ("?" und "*"), die auf die resultierende Dateiliste angewendet wird (Standard = "").

includesubfolders: Setzen Sie dieses Argument auf True, um den Inhalt von Unterordnern einzuschließen (Standard = False).

### Beispiel:

##### In Basic

          Dim filesList As Variant, file As String
          FSO.FileNaming = "SYS"
          ' Gibt alle Dateien zurück, die dem Filter "*.txt" entsprechen, einschließlich Dateien in Unterordnern
          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

Gibt True zurück, wenn der angegebene FolderName gültig und vorhanden ist, ansonsten gibt die Methode False zurück.

Wenn der Parameter foldername tatsächlich ein vorhandener Dateiname ist, gibt die Methode False zurück.

### Syntax:

svc.FolderExists(foldername: str): bool

### Parameter:

foldername: Eine Zeichenfolge, die den zu testenden Ordner darstellt.

### Beispiel:

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

Gibt den BaseName (gleich der letzten Komponente) eines Ordner- oder Dateinamens ohne seine Erweiterung zurück.

Die Methode überprüft nicht, ob die angegebene Datei oder der angegebene Ordner vorhanden ist.

### Syntax:

svc.GetBaseName(filename: str): str

### Parameter:

filename: Eine Zeichenfolge, die den Dateinamen und seinen Pfad darstellt.

### Beispiel:

In den folgenden Beispielen entspricht der erste Methodenaufruf von GetBaseName einem Ordner, sodass die Funktion die letzte Komponente des Pfads zurückgibt. Der zweite Aufruf erhält einen Dateinamen als Eingabe, sodass der Name der Datei ohne Erweiterung zurückgegeben wird.

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

Gibt die Erweiterung eines Datei- oder Ordnernamens ohne den Punkt "." wieder.

Die Methode prüft nicht, ob die angegebene Datei oder der angegebene Ordner vorhanden sind.

Wenn diese Methode auf einen Ordnernamen oder eine Datei ohne Erweiterung angewendet wird, wird eine leere Zeichenfolge zurückgegeben.

### Syntax:

svc.GetExtension(filename: str): str

### Parameter:

filename: Eine Zeichenfolge, die den Dateinamen und seinen Pfad darstellt.

### Beispiel:

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

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

## GetFileLen

Die eingebaute Basic-Funktion FileLen gibt die Anzahl der in einer Datei enthaltenen Bytes als Wert vom Typ Long zurück, also bis zu 2 GB.

Die Methode GetFileLen kann Dateien mit viel größeren Größen verarbeiten, indem sie einen Wert vom Typ Currency zurückgibt.

### Syntax:

svc.GetFileLen(filename: str): num

### Parameter:

filename: Eine Zeichenfolge, die eine vorhandene Datei darstellt.

### Beispiel:

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

Gibt das Datum der letzten Änderung einer bestimmten Datei zurück.

### Syntax:

svc.GetFileModified(filename: str): datetime

### Parameter:

filename: Eine Zeichenfolge, die eine vorhandene Datei darstellt.

### Beispiel:

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

Gibt die letzte Komponente eines Datei- oder Ordnernamens im nativen Betriebssystemformat zurück.

Die Methode überprüft nicht, ob die angegebene Datei oder der angegebene Ordner vorhanden ist.

### Syntax:

svc.GetName(filename: str): str

### Parameter:

filename: Eine Zeichenfolge, die den Dateinamen und seinen Pfad darstellt.

### Beispiel:

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

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

## GetParentFolderName

Gibt eine Zeichenfolge zurück, die den Namen des übergeordneten Ordners einer angegebenen Datei oder eines Ordnernamens enthält.

Die Methode überprüft nicht, ob die angegebene Datei oder der angegebene Ordner vorhanden ist.

### Syntax:

svc.GetParentFolderName(filename: str): str

### Parameter:

filename: Eine Zeichenfolge mit dem Datei- oder Ordnernamen, der analysiert werden soll.

### Beispiel:

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

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

## GetTempName

Gibt einen zufällig erzeugten temporären Dateinamen zurück, der zum Ausführen von Vorgängen nützlich ist, die eine temporäre Datei erfordern.

Standardmäßig hat der zurückgegebene Dateiname keine Erweiterung. Verwenden Sie den Parameter extension, um die Erweiterung des zu erzeugenden Dateinamens anzugeben.

Der Ordnerteil der zurückgegebenen Zeichenfolge ist der temporäre Ordner des Systems.

Die Methode erstellt keine temporäre Datei.

### Syntax:

svc.GetTempName(extension: str): str

### Parameter:

extension: Die Erweiterung des temporären Dateinamens (Standard = "").

### Beispiel:

##### 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-Funktionen werden von einigen kryptografischen Algorithmen in digitalen Signaturen, Nachrichtenauthentifizierungscodes, Betrugserkennung, Fingerabdrücken, Prüfsummen (Nachrichtenintegritätsprüfung), Hash-Tabellen, Kennwortspeicherung und vielem mehr verwendet.

Die Methode HashFile gibt das Ergebnis einer Hash-Funktion zurück, die auf eine bestimmte Datei angewendet wird und einen bestimmten Algorithmus verwendet. Der zurückgegebene Wert ist eine Zeichenfolge aus Hexadezimalziffern in Kleinbuchstaben.

Die unterstützten Hash-Algorithmen sind: MD5, SHA1, SHA224, SHA256, SHA384 und SHA512.

### Syntax:

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

### Parameter:

Dateiname: Eine Zeichenfolge, die eine vorhandene Datei darstellt.

Algorithm: Einer der unterstützten Algorithmen.

### Beispiel:

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

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

## MoveFile

Verschiebt eine oder mehrere Dateien von einem Speicherort an einen anderen. Gibt True zurück, wenn mindestens eine Datei verschoben wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter source Platzhalter verwendet und mit keiner Datei übereinstimmt.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

### Syntax:

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

### Parameter:

source: Kann ein FileName oder NamePattern sein, um eine oder mehrere zu verschiebende Dateien anzugeben.

destination: Wenn source ein FileName ist, dann gibt dieser Parameter den neuen Pfad und Dateinamen der verschobenen Datei an.

Wenn der Verschiebevorgang mehrere Dateien umfasst, muss destination ein Ordnername sein. Wenn es nicht existiert, wird es erstellt.

Wenn source und destination denselben übergeordneten Ordner haben, benennt die Methode die source um.

Platzhalter sind in destination nicht zulässig.

### Beispiel:

In den folgenden Beispielen werden nur Dateien verschoben, Unterordner nicht.

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

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

## MoveFolder

Verschiebt einen oder mehrere Ordner von einem Ort an einen anderen. Gibt True zurück, wenn mindestens ein Ordner verschoben wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter source Platzhalter verwendet und mit keinem Ordner übereinstimmt.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

### Syntax:

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

### Parameter:

source: Kann ein FolderName oder ein NamePattern sein, um einen oder mehrere zu verschiebende Ordner anzugeben.

destination: Wenn der Verschiebevorgang einen einzelnen Ordner betrifft, dann ist destination der Name und Pfad des verschobenen Ordners und darf nicht existieren.

Wenn mehrere Ordner verschoben werden, gibt destination an, wohin die Ordner in source verschoben werden. Wenn destination nicht existiert, wird es erstellt.

Platzhalter sind in destination nicht zulässig.

### Beispiel:

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

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

## Normalize

Gibt eine Zeichenfolge zurück, die den normalisierten Pfadnamen enthält, indem redundante Trennzeichen und Verweise auf höherer Ebene reduziert werden.

Zum Beispiel die Pfadnamen A//B, A/B/, A/./B und A/foo/ ../B werden alle auf A/B normalisiert.

Unter Windows werden Schrägstriche „/“ in Rückstriche „\“ umgewandelt.

Der aktuelle Wert der Eigenschaft SF_FileSystem.FileNaming wird verwendet, um die Schreibweise des Arguments filename sowie das Format der zurückgegebenen Zeichenfolge zu bestimmen.

### Syntax:

svc.Normalize(filename: str): str

### Parameter:

filename: eine Zeichenfolge, die einen gültigen Pfadnamen darstellt. Die durch dieses Argument dargestellte Datei oder das Verzeichnis existiert möglicherweise nicht.

### Beispiel:

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

Öffnet eine Datei und gibt ein Objekt TextStream zurück, das zum Lesen, Schreiben oder Anhängen an die Datei verwendet werden kann.

Beachten Sie, dass die Methode nicht überprüft, ob die angegebene Datei wirklich eine Textdatei ist.

Die Methode gibt ein Objekt vom Typ Null (in Basic) oder None (in Python) zurück, wenn ein Fehler aufgetreten ist.

### Syntax:

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

### Parameter:

filename: Identifiziert die zu öffnende Datei.

iomode: Gibt den Ein-/Ausgabemodus an. Es kann eine von drei Konstanten sein: svc.ForReading (Standard), svc.ForWriting oder svc.ForAppending.

create: Boolescher Wert, der angibt, ob eine neue Datei erstellt werden kann, wenn der angegebene filename nicht existiert:

- Wenn True werden eine neue Datei und ihre übergeordneten Ordner erstellt, wenn sie nicht existieren;

- Wenn False, werden keine neuen Dateien erstellt (Standard).

encoding: Der zu verwendende Zeichensatz. Die Standardcodierung ist "UTF-8".

### Beispiel:

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

Öffnet einen Dialog zum Öffnen oder Speichern von Dateien.

Wenn der Modus SAVE eingestellt ist und die ausgewählte Datei existiert, wird eine Warnmeldung angezeigt.

### Syntax:

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

### Parameter:

defaultfile: Dieses Argument ist eine Zeichenfolge, die aus einem Ordner- und Dateinamen besteht:

- Der Ordnerteil gibt den Ordner an, der beim Öffnen des Dialogs angezeigt wird (Standard = der zuletzt ausgewählte Ordner).

- Der Dateiteil bezeichnet die zu öffnende oder zu speichernde Standarddatei.

mode: Eine Zeichenfolge, die entweder "OPEN" (für Eingabedateien) oder "SAVE" (für Ausgabedateien) sein kann. Der Standardwert ist "OPEN".

filter: Die Erweiterung der Dateien, die angezeigt werden, wenn der Dialog geöffnet wird (Standard = kein Filter).

### Beispiel:

Die folgenden Beispiele öffnen eine Dateiauswahl mit angewendetem Filter "txt".

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

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

## PickFolder

Öffnet einen Dialog zur Auswahl eines Ordners.

### Syntax:

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

### Parameter:

defaultfolder: Eine Zeichenfolge, welche den Ordnernamen enthält, der angezeigt wird, wenn der Dialog geöffnet wird (Standard = der zuletzt ausgewählte Ordner).

freetext: Text, der im Dialog angezeigt werden soll (Standard = "").

### Beispiel:

          ' Basic
          aFolder = FSO.PickFolder("C:\Dokumente", "Wählen Sie einen Ordner oder klicken Sie auf Abbrechen")

          # Python
          aFolder = fs.PickFolder(r"C:\Documents", "Wählen Sie einen Ordner oder klicken Sie auf Abbrechen")

## SubFolders

Gibt eine nullbasierte Matrix von Zeichenfolgen zurück, die den Ordnern entsprechen, die in einem bestimmten Ordnernamen gespeichert sind.

Die Liste kann mit Platzhaltern gefiltert werden.

### Syntax:

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

### Parameter:

foldername: Eine Zeichenfolge, die einen Ordner darstellt. Der Ordner muss vorhanden sein. foldername darf keine Datei bezeichnen.

filter: Eine Zeichenfolge mit Platzhaltern ("?" und "*"), die auf die resultierende Ordnerliste angewendet wird (Standard = "").

includesubfolders: Setzen Sie dieses Argument auf True, um den Inhalt von Unterordnern einzuschließen (Standard = False).

### Beispiel:

##### 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-Routinen oder Bezeichner, denen ein Unterstrich "_" vorangestellt ist, sind für den internen Gebrauch reserviert. Sie sind nicht für die Verwendung in Basic-Makros oder Python-Skripten vorgesehen.

Verwandte Themen

Dienst ScriptForge.TextStream

VBA-Funktion Input

Anweisung Open