Contenu

# ScriptForge. Service FileSystem

Le service FileSystem inclut des routines pour gérer les fichiers et les dossiers. Voici quelques exemples des fonctionnalités fournies par ce service :

- Vérifier si un fichier ou un dossier existe.

- Créer ou supprimer des dossiers et des fichiers.

- Lancer des boîtes de dialogue pour ouvrir/enregistrer des fichiers.

- Accéder à la liste des fichiers d'un dossier, etc.

Les méthodes du service FileSystem sont principalement basées sur l'interface UNO XSimpleFileAccess.

## Définitions

Le tableau ci-dessous répertorie les principaux paramètres utilisés par la plupart des méthodes du service FileSystem.

Paramètre | Description
--- | ---
FileName | Le nom complet du fichier, y compris le chemin sans séparateur de chemin à la fin.
FolderName | Le nom complet du dossier, y compris le chemin. Il peut ou non contenir le séparateur de chemin de fin.
Name | Le dernier composant du Folder Name ou du File Name, y compris son extension. Ce paramètre est toujours exprimé en utilisant le format natif du système d'exploitation.
BaseName | Le dernier composant du Folder Name ou du File Name sans son extension.
NamePattern | N'importe lequel des noms ci-dessus contenant des caractères génériques dans son dernier composant. Les jokers admis sont : "?" représente n'importe quel caractère unique "*" représente zéro, un ou plusieurs caractères

Le service FileSystem permet d'effectuer des opérations sur plusieurs fichiers en même temps. En utilisant des modèles de nom, les scripts utilisateur peuvent copier, déplacer ou supprimer plusieurs fichiers. Inversement, les méthodes intégrées Basic ne peuvent gérer que des fichiers uniques.

### Notation de nommage de fichier

La notation utilisée pour exprimer les noms de fichiers et de dossiers, à la fois pour les arguments et les valeurs renvoyées, est définie par la propriété FileNaming du service FileSystem.

En bref, les types de représentation possibles sont "URL" (notation de fichier URL), "SYS" (notation de système d'exploitation) et "ANY" (par défaut). Voir plus d'informations ci-dessous.

Un exemple de notation d'URL est file:///C:/Documents/my_file.odt. Dans la mesure du possible, envisagez d'utiliser la notation URL car c'est une alternative plus portable.

L'utilisation du raccourci "~" (tilde), qui est courant dans les systèmes d'exploitation basés sur Linux, n'est pas prise en charge pour exprimer un chemin vers un dossier et un nom de fichier. Au lieu d'utiliser "~/Documents/my_file.odt" utilisez le chemin complet "/home/user/Documents/my_file.odt".

## Invocation du service

L'extrait de code suivant appelle le service FileSystem. La méthode BuildPath a été utilisée comme exemple.

##### En Basic :

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

##### En Python

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

## Accès au système de fichiers virtuel d'un document

Les fichiers de document LibreOffice sont des fichiers ZIP compressés qui contiennent les fichiers et dossiers représentant le contenu réel du document. Pendant que le document est ouvert, il est possible d'accéder à ce système de fichiers virtuel, d'explorer sa structure, ainsi que de lire et de créer des fichiers et des dossiers.

L'exemple suivant montre comment créer un fichier texte nommé myFile.txt et le stocker dans le système de fichiers virtuel du document.

##### En 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)
        ' Obtient la notation du chemin URL vers la racine du système de fichiers virtuel
        sRoot = oDoc.FileSystem()
        sMyDir = sRoot & "myDir"
        ' Crée le dossier "myDir" s'il n'existe pas
        If Not fso.FolderExists(sMyDir) Then
            fso.CreateFolder(sMyDir)
        End If
        ' Crée le fichier et y écrit du texte
        sFile = fso.BuildPath(sMyDir, "myFile.txt")
        oFile = fso.CreateTextFile(sFile)
        oFile.WriteLine("Hello!")
        oFile.CloseFile()

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

En général, toutes les méthodes du service FileSystem peuvent être utilisées pour manipuler des fichiers dans le système de fichiers virtuel du document. Toutefois, les restrictions suivantes s'appliquent :

- Il n'est pas possible de créer des fichiers dans le dossier racine. Utilisez les sous-dossiers existants ou créez de nouveaux dossiers pour stocker les fichiers dans le système de fichiers du document.

- La notation FileNaming est toujours considérée comme "URL".

- Les méthodes CompareFiles, GetFileModified, HashFile, PickFile et PickFolder ne sont pas applicables.

- La méthode GetFileLen renvoie toujours zéro.

- La méthode Normalize renvoie toujours la chaîne d'entrée inchangée.

Le chemin d'accès au système de fichiers virtuel n'est pas une adresse physique sur le disque dur de l'ordinateur. Il n'est accessible qu'à partir d'un script LibreOffice et n'existe que lorsque le fichier de document est ouvert.

## Propriétés

Nom | Lecture seule | Type | Description
--- | --- | --- | ---
FileNaming | Non | String | Définit ou renvoie la notation actuelle des fichiers et dossiers, soit "ANY", "URL" ou "SYS": "ANY" : (par défaut) les méthodes du service FileSystem acceptent à la fois l'URL et la notation du système d'exploitation actuel pour les arguments d'entrée, mais renvoient toujours des chaînes d'URL. "URL" : les méthodes du service FileSystem attendent une notation d'URL pour les arguments d'entrée et renvoient des chaînes d'URL. "SYS" : les méthodes du service FileSystem attendent la notation du système d'exploitation actuel pour les arguments d'entrée et les chaînes de retour. Une fois définie, la propriété FileNaming reste inchangée jusqu'à la fin de la session LibreOffice ou jusqu'à ce qu'elle soit à nouveau définie.
ConfigFolder | Oui | String | Renvoie le dossier de configuration de LibreOffice.
ExtensionsFolder | Oui | String | Renvoie le dossier dans lequel les extensions sont installées.
HomeFolder | Oui | String | Renvoie le dossier d'accueil de l'utilisateur.
InstallFolder | Oui | String | Renvoie le dossier d'installation de LibreOffice.
TemplatesFolder | Oui | String | Renvoie le dossier contenant les fichiers de modèles système.
TemporaryFolder | Oui | String | Renvoie le dossier des fichiers temporaires défini dans les paramètres du chemin LibreOffice.
UserTemplatesFolder | Oui | String | Renvoie le dossier contenant les fichiers de modèles définis par l'utilisateur.

Liste des méthodes dans le 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

Joint un chemin de dossier et le nom d'un fichier et renvoie le nom de fichier complet avec un séparateur de chemin valide. Le séparateur de chemin n'est ajouté que si nécessaire.

### Syntaxe :

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

### Paramètres :

foldername : le chemin avec lequel name sera combiné. Le chemin spécifié n'a pas besoin d'être un dossier existant.

name : le nom du fichier à ajouter à foldername. Ce paramètre utilise la notation du système d'exploitation actuel.

### Exemple :

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

##### En Python

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

## CompareFiles

Compare deux fichiers et renvoie True lorsqu'ils semblent identiques.

Selon la valeur de l'argument comparecontents, la comparaison entre les deux fichiers peut être basée uniquement sur les attributs du fichier (comme la date de la dernière modification) ou basée sur le contenu du fichier.

### Syntaxe :

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

### Paramètres :

filename1, filename2 : les fichiers à comparer.

comparecontents : lorsque True, le contenu des fichiers est comparé (par défaut = False).

### Exemple :

##### En Basic :

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

##### En Python

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

## CopyFile

Copie un ou plusieurs fichiers d'un emplacement à un autre. Renvoie True si au moins un fichier a été copié ou False si une erreur s'est produite.

Une erreur se produira également si le paramètre source utilise des caractères génériques et ne correspond à aucun fichier.

La méthode s'arrête immédiatement après avoir rencontré une erreur. La méthode n'annule pas les modifications apportées avant que l'erreur ne se produise.

### Syntaxe :

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

### Paramètres :

source : il peut s'agir d'un FileName ou d'un NamePattern indiquant un ou plusieurs fichiers à copier.

destination : il peut s'agir soit d'un FileName spécifiant où le fichier source unique doit être copié, soit d'un FolderName dans lequel les multiples fichiers de source doivent être copiés.

- Si la destination n'existe pas, elle est créée.

- Les caractères génériques ne sont pas autorisés dans destination.

overwrite : si True (par défaut), les fichiers peuvent être écrasés. La méthode échouera si destination est en lecture seule, quelle que soit la valeur spécifiée dans overwrite.

### Exemple :

Dans les exemples ci-dessous, la première ligne copie un seul fichier tandis que la deuxième ligne copie plusieurs fichiers en utilisant des caractères génériques.

##### En Basic :

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

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

Sachez que les sous-dossiers et leur contenu ne sont pas copiés lorsque des caractères génériques sont utilisés dans l'argument source.

## CopyFolder

Copie un ou plusieurs dossiers d'un emplacement à un autre. Renvoie True si au moins un dossier a été copié ou False si une erreur s'est produite.

Une erreur se produira également si le paramètre source utilise des caractères génériques et ne correspond à aucun dossier.

La méthode s'arrête immédiatement après avoir rencontré une erreur. La méthode n'annule pas les modifications apportées avant que l'erreur ne se produise.

### Syntaxe :

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

### Paramètres :

source : il peut s'agir d'un FolderName ou d'un NamePattern indiquant un ou plusieurs dossiers à copier.

destination : spécifie le FolderName dans lequel les dossiers uniques ou multiples définis dans source doivent être copiés.

- Si la destination n'existe pas, elle est créée.

- Les caractères génériques ne sont pas autorisés dans destination.

overwrite : si True (par défaut), les fichiers peuvent être écrasés. La méthode échouera si destination est en lecture seule, quelle que soit la valeur spécifiée dans overwrite.

### Exemple :

Dans les exemples ci-dessous, tous les fichiers, dossiers et sous-dossiers sont copiés.

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

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

## CreateFolder

Crée le FolderName spécifié. Renvoie True si le dossier a pu être créé avec succès.

Si le dossier spécifié a un dossier parent qui n'existe pas, il est créé.

### Syntaxe :

svc.CreateFolder(foldername: str): bool

### Paramètres :

foldername : une chaîne représentant le dossier à créer. Si le dossier existe déjà, une exception sera levée.

### Exemple :

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

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

## CreateTextFile

Crée un fichier spécifié et renvoie une instance de service TextStream qui peut être utilisée pour écrire dans le fichier.

La méthode renvoie un objet Null si une erreur s'est produite.

### Syntaxe :

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

### Paramètres :

filename : le nom du fichier à créer.

overwrite : valeur booléenne qui détermine si filename peut être écrasé (par défaut = True).

encoding : le jeu de caractères à utiliser. L'encodage par défaut est "UTF-8".

### Exemple :

##### En Basic :

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

##### En Python

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

Pour en savoir plus sur les noms des jeux de caractères, visitez la page Jeu de caractères de l'IANA. N'oubliez pas que LibreOffice n'implémente pas tous les jeux de caractères existants.

## DeleteFile

Supprime un ou plusieurs fichiers. Renvoie True si au moins un fichier a été supprimé ou False si une erreur s'est produite.

Une erreur se produira également si le paramètre filename utilise des caractères génériques et ne correspond à aucun fichier.

Les fichiers à supprimer ne doivent pas être en lecture seule.

La méthode s'arrête immédiatement après avoir rencontré une erreur. La méthode n'annule pas les modifications apportées avant que l'erreur ne se produise.

### Syntaxe :

svc.DeleteFile(filename: str): bool

### Paramètres :

filename : il peut s'agir d'un FileName ou d'un NamePattern indiquant un ou plusieurs fichiers à supprimer.

### Exemple :

Dans les exemples ci-dessous, seuls les fichiers sont supprimés, les sous-dossiers ne sont pas supprimés.

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

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

## DeleteFolder

Supprime un ou plusieurs dossiers. Renvoie True si au moins un dossier a été supprimé ou False si une erreur s'est produite.

Une erreur se produira également si le paramètre foldername utilise des caractères génériques et ne correspond à aucun dossier.

Les dossiers à supprimer ne doivent pas être en lecture seule.

La méthode s'arrête immédiatement après avoir rencontré une erreur. La méthode n'annule pas les modifications apportées avant que l'erreur ne se produise.

### Syntaxe :

svc.DeleteFolder(foldername: str): bool

### Paramètres :

foldername : il peut s'agir d'un FolderName ou d'un NamePattern indiquant un ou plusieurs dossiers à supprimer.

### Exemple :

Dans les exemples ci-dessous, seuls les dossiers et leur contenu sont supprimés. Les fichiers du dossier parent "C:\Temp" ne sont pas supprimés.

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

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

## ExtensionFolder

Renvoie une chaîne contenant le dossier dans lequel le package d'extension spécifié est installé.

La valeur actuelle de la propriété FS FileSystem.File Naming est utilisée pour déterminer la notation de la chaîne renvoyée.

Utilisez la propriété Extensions du service Platform pour obtenir une matrice de chaînes avec les identifiants de toutes les extensions installées.

### Syntaxe :

svc.ExtensionFolder(extension: str): str

### Paramètres :

extension : une valeur de chaîne avec l'ID de l'extension. Si l'extension n'est pas installée, une exception est levée.

### Exemple :

Les exemples ci-dessous en Basic et Python renvoient le dossier dans lequel l'extension APSO est installée.

          ' 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

Renvoie True si un nom de fichier donné est valide et existe, sinon la méthode renvoie False.

Si le paramètre filename est en fait un nom de dossier existant, la méthode renvoie False.

### Syntaxe :

svc.FileExists(filename: str): bool

### Paramètres :

filename: une chaîne représentant le fichier à tester.

### Exemple :

##### En Basic :

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

##### En Python

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

## Files

Renvoie une matrice de base zéro des fichiers stockés dans un dossier donné. Chaque entrée du tableau est une chaîne contenant le chemin complet et le nom du fichier.

Si l'argument foldername spécifie un dossier qui n'existe pas, une exception est levée.

La liste résultante peut être filtrée avec des caractères génériques.

### Syntaxe :

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

### Paramètres :

foldername : une chaîne représentant un dossier. Le dossier doit exister. Cet argument ne doit pas désigner un fichier.

filter : une chaîne contenant des caractères génériques ("?" et "*") qui seront appliqués à la liste de fichiers résultante (par défaut = "").

includesubfolders : définissez cet argument sur True pour inclure le contenu des sous-dossiers (par défaut = False).

### Exemple :

##### En Basic :

          Dim filesList As Variant, file As String
          FSO.FileNaming = "SYS"
          ' Renvoie tous les fichiers correspondant au filtre "*.txt", y compris les fichiers dans les sous-dossiers
          filesList = FSO.Files("/home/user/", "*.txt", IncludeSubfolders := True)
          For Each file In filesList
              ' ...
          Next file

##### En Python

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

## FolderExists

Renvoie True si le FolderName spécifié est valide et existe, sinon la méthode renvoie False.

Si le paramètre foldername est en fait un nom de fichier existant, la méthode renvoie False.

### Syntaxe :

svc.FolderExists(foldername: str): bool

### Paramètres :

foldername : une chaîne représentant le dossier à tester.

### Exemple :

##### En Basic :

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

##### En Python

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

## GetBaseName

Renvoie le BaseName (égal au dernier composant) d'un nom de dossier ou de fichier, sans son extension.

La méthode ne vérifie pas si le dossier ou le fichier spécifié existe.

### Syntaxe :

svc.GetBaseName(filename: str): str

### Paramètres :

filename: une chaîne représentant le nom du fichier et son chemin.

### Exemple :

Dans les exemples ci-dessous, le premier appel de la méthode GetBaseName correspond à un dossier, donc la fonction renvoie le dernier composant du chemin. Le deuxième appel reçoit un nom de fichier en entrée, donc le nom du fichier est renvoyé sans son extension.

##### En Basic :

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

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

Renvoie la partie extension d'un nom de fichier ou de dossier sans le caractère point ".".

Cette méthode ne vérifie pas l'existence du fichier ou du dossier spécifié.

Si cette méthode est appliquée à un nom de dossier ou à un fichier sans extension, alors une chaîne vide est renvoyée.

### Syntaxe :

svc.GetExtension(filename: str): str

### Paramètres :

filename: une chaîne représentant le nom du fichier et son chemin.

### Exemple :

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

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

## GetFileLen

La fonction intégrée FileLen Basic renvoie le nombre d'octets contenus dans un fichier sous la forme d'une valeur Long, c'est-à-dire jusqu'à 2 Go.

La méthode GetFileLen peut gérer des fichiers de tailles beaucoup plus importantes en retournant une valeur Currency.

### Syntaxe :

svc.GetFileLen(filename: str): num

### Paramètres :

filename: une chaîne représentant un fichier existant.

### Exemple :

##### En Basic :

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

##### En Python

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

## GetFileModified

Renvoie la date de dernière modification d'un fichier donné.

### Syntaxe :

svc.GetFileModified(filename: str): datetime

### Paramètres :

filename: une chaîne représentant un fichier existant.

### Exemple :

##### En Basic :

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

##### En Python

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

## GetName

Renvoie le dernier composant d'un nom de fichier ou de dossier au format natif du système d'exploitation.

La méthode ne vérifie pas si le dossier ou le fichier spécifié existe.

### Syntaxe :

svc.GetName(filename: str): str

### Paramètres :

filename: une chaîne représentant le nom du fichier et son chemin.

### Exemple :

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

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

## GetParentFolderName

Renvoie une chaîne contenant le nom du dossier parent d'un nom de fichier ou de dossier spécifié.

La méthode ne vérifie pas si le dossier ou le fichier spécifié existe.

### Syntaxe :

svc.GetParentFolderName(filename: str): str

### Paramètres :

filename : une chaîne avec le nom du fichier ou du dossier à analyser.

### Exemple :

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

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

## GetTempName

Renvoie un nom de fichier temporaire généré de manière aléatoire qui est utile pour effectuer des opérations nécessitant un fichier temporaire.

Par défaut, le nom de fichier renvoyé n'a pas d'extension. Utilisez le paramètre extension pour spécifier l'extension du nom de fichier à générer.

La partie dossier de la chaîne renvoyée est le dossier temporaire du système.

Cette méthode ne crée pas le fichier temporaire.

### Syntaxe :

svc.GetTempName(extension: str): str

### Paramètres :

extension : l'extension du nom du fichier temporaire (par défaut = "").

### Exemple :

##### En Basic :

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

##### En Python

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

## HashFile

Les fonctions de hachage sont utilisées par certains algorithmes de chiffrement, dans les signatures numériques, les codes d'authentification des messages, la détection des fraudes, les empreintes digitales, les sommes de contrôle (vérification de l'intégrité des messages), les tables de hachage, le stockage des mots de passe et bien plus encore.

La méthode HashFile renvoie le résultat d'une fonction de hachage, appliquée sur un fichier donné et utilisant un algorithme spécifié. La valeur renvoyée est une chaîne de chiffres hexadécimaux en minuscules.

Les algorithmes de hachage pris en charge sont : MD5, SHA1, SHA224, SHA256, SHA384 et SHA512.

### Syntaxe :

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

### Paramètres :

filename: une chaîne représentant un fichier existant.

algorithm : un des algorithmes pris en charge.

### Exemple :

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

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

## MoveFile

Déplace un ou plusieurs fichiers d'un emplacement à un autre. Renvoie True si au moins un fichier a été déplacé ou False si une erreur s'est produite.

Une erreur se produira également si le paramètre source utilise des caractères génériques et ne correspond à aucun fichier.

La méthode s'arrête immédiatement après avoir rencontré une erreur. La méthode n'annule pas les modifications apportées avant que l'erreur ne se produise.

### Syntaxe :

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

### Paramètres :

source : il peut s'agir d'un FileName ou d'un NamePattern indiquant un ou plusieurs fichiers à déplacer.

destination : si source est un FileName alors ce paramètre indique le nouveau chemin et le nom du fichier déplacé.

Si l'opération de déplacement implique plusieurs fichiers, alors destination doit être un nom de dossier. S'il n'existe pas, il est créé.

Si source et destination ont le même dossier parent, la méthode renommera la source.

Les caractères génériques ne sont pas autorisés dans destination.

### Exemple :

Dans les exemples suivants, seuls les fichiers sont déplacé, les sous-dossiers ne le sont pas.

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

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

## MoveFolder

Déplace un ou plusieurs dossiers d'un emplacement à un autre. Renvoie True si au moins un dossier a été déplacé ou False si une erreur s'est produite.

Une erreur se produira également si le paramètre source utilise des caractères génériques et ne correspond à aucun dossier.

La méthode s'arrête immédiatement après avoir rencontré une erreur. La méthode n'annule pas les modifications apportées avant que l'erreur ne se produise.

### Syntaxe :

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

### Paramètres :

source : il peut s'agir d'un FolderName ou d'un NamePattern indiquant un ou plusieurs dossiers à déplacer.

destination : si l'opération de déplacement implique un seul dossier, alors destination est le nom et le chemin du dossier déplacé et il ne doit pas exister.

Si plusieurs dossiers sont déplacés, alors destination désigne l'endroit où les dossiers de source seront déplacés. Si la destination n'existe pas, elle est créée.

Les caractères génériques ne sont pas autorisés dans destination.

### Exemple :

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

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

## Normalize

Renvoie une chaîne contenant le nom de chemin normalisé en réduisant les séparateurs redondants et les références de niveau supérieur.

Par exemple, les noms de chemin A//B, A/B/, A/./B et A/foo/ ../B sont tous normalisés en A/B.

Sous Windows, les barres obliques "/" sont converties en barres obliques inverses "\".

La valeur actuelle de la propriété SF_FileSystem.FileNaming est utilisée pour déterminer la notation de l'argument filename ainsi que le format de la chaîne renvoyée.

### Syntaxe :

svc.Normalize(filename: str): str

### Paramètres :

filename : une chaîne représentant un nom de chemin valide. Le fichier ou le répertoire représenté par cet argument peut ne pas exister.

### Exemple :

##### En 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/../")

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

Ouvre un fichier et renvoie un objet TextStream qui peut être utilisé pour lire, écrire ou ajouter au fichier.

Notez que la méthode ne vérifie pas si le fichier donné est vraiment un fichier texte.

La méthode renvoie un objet Null (en Basic) ou None (en Python) si une erreur s'est produite.

### Syntaxe :

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

### Paramètres :

filename : identifie le fichier à ouvrir.

iomode : indique le mode d'entrée/sortie. Il peut s'agir de l'une des trois constantes : svc.ForReading (par défaut), svc.ForWriting ou svc.ForAppending.

create : valeur booléenne qui indique si un nouveau fichier peut être créé si le filename spécifié n'existe pas :

- Si True un nouveau fichier et ses dossiers parents seront créés s'ils n'existent pas ;

- Si False alors les nouveaux fichiers ne sont pas créés (par défaut).

encoding : le jeu de caractères à utiliser. L'encodage par défaut est "UTF-8".

### Exemple :

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

##### En Python

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

## PickFile

Ouvre une boîte de dialogue pour ouvrir ou enregistrer des fichiers.

Si le mode SAVE est activé et que le fichier sélectionné existe, un message d'avertissement s'affichera.

### Syntaxe :

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

### Paramètres :

defaultfile : cet argument est une chaîne composée d'un dossier et d'un nom de fichier :

- La partie dossier indique le dossier qui sera affiché à l'ouverture de la boîte de dialogue (par défaut = le dernier dossier sélectionné).

- La partie fichier désigne le fichier par défaut à ouvrir ou à enregistrer.

mode : une valeur de chaîne qui peut être "OPEN" (pour les fichiers d'entrée) ou "SAVE" (pour les fichiers de sortie). La valeur par défaut est "OPEN".

filtre : l'extension des fichiers affichés à l'ouverture de la boîte de dialogue (par défaut = pas de filtre).

### Exemple :

Les exemples ci-dessous ouvrent un sélecteur de fichiers avec le filtre "txt" appliqué.

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

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

## PickFolder

Ouvre une boîte de dialogue pour sélectionner un dossier.

### Syntaxe :

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

### Paramètres :

defaultfolder : une chaîne contenant le nom du dossier qui sera affiché à l'ouverture de la boîte de dialogue (par défaut = le dernier dossier sélectionné).

freetext : le texte à afficher dans la boîte de dialogue (par défaut ="").

### Exemple :

          ' Basic
          aFolder = FSO.PickFolder("C:\Documents", "Choose a folder or press Cancel")

          # Python
          aFolder = fs.PickFolder(r"C:\Documents", "Choose a folder or press Cancel")

## SubFolders

Renvoie un tableau de chaînes de base zéro correspondant aux dossiers stockés dans un foldername donné.

La liste peut être filtrée avec des caractères génériques.

### Syntaxe :

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

### Paramètres :

foldername : une chaîne représentant un dossier. Le dossier doit exister. foldername ne doit pas désigner un fichier.

filter : une chaîne contenant des caractères génériques ("?" et "*") qui seront appliqués à la liste de dossiers résultante (par défaut = "").

includesubfolders : définissez cet argument sur True pour inclure le contenu des sous-dossiers (par défaut = False).

### Exemple :

##### En Basic :

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

##### En Python

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

Toutes les routines ou identifiants de base ScriptForge qui sont préfixés par un caractère de soulignement "_" sont réservés à un usage interne. Ils ne sont pas destinés à être utilisés dans des macros de base ou des scripts Python.

Rubriques connexes

Service ScriptForge.TextStream

Fonction Input [VBA]

Instruction Optn