Difference between revisions of "FR/Documentation/BASIC Guide/Files and Directories (Runtime Library)"
(→Création et suppression de répertoires) |
|||
Line 10: | Line 10: | ||
L'utilisation des fichiers est une des tâches de base d'une application. L'API {{OOo}} fournit un grand nombre d'objets permettant de créer, d'ouvrir et de modifier des documents Office. Ils sont présentés en détail au chapitre [[Documentation/BASIC Guide/API Intro|Introduction à l'API {{OOo}}]]. Indépendamment de cela, il peut parfois s'avérer nécessaire d'accéder directement au système de fichiers, d'effectuer des recherches dans les répertoires ou d'éditer des fichiers texte. La bibliothèque d'exécution de {{OOo}} Basic fournit plusieurs fonctions fondamentales pour ces tâches. | L'utilisation des fichiers est une des tâches de base d'une application. L'API {{OOo}} fournit un grand nombre d'objets permettant de créer, d'ouvrir et de modifier des documents Office. Ils sont présentés en détail au chapitre [[Documentation/BASIC Guide/API Intro|Introduction à l'API {{OOo}}]]. Indépendamment de cela, il peut parfois s'avérer nécessaire d'accéder directement au système de fichiers, d'effectuer des recherches dans les répertoires ou d'éditer des fichiers texte. La bibliothèque d'exécution de {{OOo}} Basic fournit plusieurs fonctions fondamentales pour ces tâches. | ||
− | {{ | + | {{Note|Certaines fonctions spécifiques à DOS pour les fichiers et les répertoires ne sont plus proposées par {{OOo}}, ou seulement avec des fonctionnalités limitées. Par exemple, les fonctions <tt>ChDir</tt>, <tt>ChDrive</tt> et <tt>CurDir</tt> ne sont plus prises en charge. Certaines propriétés spécifiques à DOS ne sont plus utilisées dans les fonctions utilisant des propriétés de fichier comme paramètres (par exemple, pour distinguer les fichiers cachés et les fichiers système). Cette évolution était devenue nécessaire pour assurer une indépendance maximum de {{OOo}} par rapport aux différentes plates-formes.}} |
== Administration des fichiers == | == Administration des fichiers == | ||
Line 61: | Line 61: | ||
</source> | </source> | ||
− | {{ | + | {{Note|Lorsqu'elle est appelée dans {{OOo}} Basic, la fonction <tt>Dir</tt> utilisée avec le paramètre 16 retourne uniquement les sous-répertoires d'un dossier. Dans VBA, la fonction retourne également les noms des fichiers standard, ce qui oblige à opérer un traitement supplémentaire pour n'obtenir que les répertoires. Lorsque la fonction <tt>CompatibilityMode ( true )</tt> est utilisée, {{OOo}} Basic, utilisé avec le paramètre 16, se comporte comme les fonctions VBA et Dir, et retourne des sous-répertoires et des fichiers standard.}} |
− | {{ | + | {{Note|Les options proposées par VBA pour rechercher dans des répertoires uniquement les fichiers possédant les propriétés '''caché''', '''fichier système''', '''archive''' et '''nom de volume''' n'existent pas dans {{OOo}} Basic, car les fonctions de système de fichiers correspondantes n'existent pas dans tous les systèmes d'exploitation.}} |
− | {{ | + | {{Note|Les indications de chemin utilisées avec la fonction <tt>Dir</tt> peuvent contenir les substituants * et ? dans VBA comme dans {{OOo}} Basic. Cependant, dans {{OOo}} Basic, le substituant * ne peut être que le dernier caractère du nom d'un fichier ou de son extension, ce qui n'est pas le cas dans VBA. }} |
=== Création et suppression de répertoires === | === Création et suppression de répertoires === | ||
Line 90: | Line 90: | ||
Si le répertoire contient des sous-répertoires ou des fichiers, ceux-ci sont '''également supprimés.''' Par conséquent, utilisez la fonction <tt>RmDir</tt> avec prudence. | Si le répertoire contient des sous-répertoires ou des fichiers, ceux-ci sont '''également supprimés.''' Par conséquent, utilisez la fonction <tt>RmDir</tt> avec prudence. | ||
− | {{ | + | {{Note|Dans VBA, les fonctions <tt>MkDir</tt> et <tt>RmDir</tt> ne s'appliquent qu'au répertoire actif. En revanche, dans {{OOo}} Basic, les fonctions <tt>MkDir</tt> et <tt>RmDir</tt> peuvent servir à créer ou à supprimer plusieurs niveaux de répertoires.}} |
− | {{ | + | {{Note|Dans VBA, <tt>RmDir</tt> génère un message d'erreur lorsqu'un répertoire contient un fichier. Dans {{OOo}} Basic, le répertoire '''et tous ses fichiers''' sont supprimés. Si vous utilisez la fonction <tt>CompatibilityMode ( true )</tt>, {{OOo}} Basic se comporte comme VBA.}} |
=== Copie, attribution d'un nouveau nom, suppression et vérification de l'existence de fichiers === | === Copie, attribution d'un nouveau nom, suppression et vérification de l'existence de fichiers === | ||
Line 161: | Line 161: | ||
</source> | </source> | ||
− | {{ | + | {{Note|Les drapeaux utilisés dans VBA pour obtenir les propriétés de fichier '''caché''', '''fichier système, archivé''' et '''nom de volume''' ne sont pas pris en charge par {{OOo}} Basic, car ils sont propres à Windows et ne sont pas disponibles dans les autres systèmes ou pas complètement.}} |
La fonction <tt>SetAttr</tt> permet de modifier les propriétés d'un fichier. Vous pouvez donc définir un fichier comme étant en lecture seule à l'aide de l'appel suivant : | La fonction <tt>SetAttr</tt> permet de modifier les propriétés d'un fichier. Vous pouvez donc définir un fichier comme étant en lecture seule à l'aide de l'appel suivant : |
Revision as of 17:57, 6 July 2018
- Fonctions de conversion (bibliothèque d'exécution de Apache OpenOffice)
- Chaînes (bibliothèque d'exécution de Apache OpenOffice BASIC)
- Date et heure (bibliothèque d'exécution de Apache OpenOffice)
- Fichiers et répertoires (bibliothèque d'exécution de Apache OpenOffice)
- Boîtes de message et zones de saisie(bibliothèque d'exécution de Apache OpenOffice)
- Autres fonctions (bibliothèque d'exécution de Apache OpenOffice)
L'utilisation des fichiers est une des tâches de base d'une application. L'API Apache OpenOffice fournit un grand nombre d'objets permettant de créer, d'ouvrir et de modifier des documents Office. Ils sont présentés en détail au chapitre Introduction à l'API Apache OpenOffice. Indépendamment de cela, il peut parfois s'avérer nécessaire d'accéder directement au système de fichiers, d'effectuer des recherches dans les répertoires ou d'éditer des fichiers texte. La bibliothèque d'exécution de Apache OpenOffice Basic fournit plusieurs fonctions fondamentales pour ces tâches.
Administration des fichiers
Recherche dans les répertoires
La fonction Dir de Apache OpenOffice Basic permet de parcourir les répertoires et sous-répertoires pour y rechercher de fichiers. Lors de la première requête, vous devez assigner une chaîne contenant le chemin des répertoires dans lesquels effectuer la recherche comme premier paramètre de la fonction Dir. Le second paramètre de la fonction Dir spécifie le fichier ou le répertoire à rechercher. Apache OpenOffice Basic retourne le nom de la première entrée de répertoire trouvée. Pour obtenir l'entrée suivante, vous devez appeler la fonction Dir sans lui passer de paramètres. Si la fonction Dir ne trouve pas d'entrée supplémentaire, elle retourne une chaîne vide.
L'exemple suivant illustre l'utilisation de la fonction Dir pour obtenir la liste des fichiers d'un répertoire. Les différents noms de fichier sont enregistrés dans la variable AllFiles, puis celle-ci s'affiche dans une boîte de message.
Sub ShowFiles Dim NextFile As String Dim AllFiles As String AllFiles = "" NextFile = Dir("C:\", 0) While NextFile <> "" AllFiles = AllFiles & Chr(13) & NextFile NextFile = Dir Wend MsgBox AllFiles End Sub
Le 0 (zéro) utilisé comme second paramètre de la fonction Dir indique à Dir de ne retourner que les noms des fichiers et d'ignorer les répertoires. Vous pouvez spécifier ici les paramètres suivants :
- 0 : retourne les fichiers normaux ;
- 16 : sous-répertoires.
L'exemple suivant est pratiquement identique au précédent, si ce n'est que la fonction Dir est appelée avec une valeur 16 en paramètre et retourne donc les sous-répertoires d'un dossier et non plus les noms des fichiers.
Sub ShowDirs Dim NextDir As String Dim AllDirs As String AllDirs = "" NextDir = Dir("C:\", 16) While NextDir <> "" AllDirs = AllDirs & Chr(13) & NextDir NextDir <nowiki>= Dir</nowiki> Wend MsgBox AllDirs End Sub
Création et suppression de répertoires
Dans Apache OpenOffice Basic, la fonction MkDir permet de créer des répertoires.
MkDir ("C:\SubDir1")
Cette fonction crée des répertoires et des sous-répertoires. Tous les répertoires nécessaires à la hiérarchie sont également créés, le cas échéant. Par exemple, si seul le répertoire C:\SubDir1 existe, l'appel :
MkDir ("C:\SubDir1\SubDir2\SubDir3\")
crée à la fois le répertoire C:\SubDir1\SubDir2 et le répertoire C:\SubDir1\SubDir2\SubDir3.
La fonction RmDir supprime des répertoires.
RmDir ("C:\SubDir1\SubDir2\SubDir3\")
Si le répertoire contient des sous-répertoires ou des fichiers, ceux-ci sont également supprimés. Par conséquent, utilisez la fonction RmDir avec prudence.
Copie, attribution d'un nouveau nom, suppression et vérification de l'existence de fichiers
L'appel suivant crée une copie du fichier Source sous le nom de Destination :
FileCopy(Source, Destination)
La fonction suivante permet de remplacer le nom de fichier OldName par NewName. Le mot clé As et l'absence de virgule remontent aux origines du langage Basic.
Name OldName As NewName
L'appel suivant supprime le fichier Filename. Pour supprimer un répertoire (avec tous ses fichiers), utilisez la fonction RmDir.
Kill(Filename)
Vous pouvez utiliser la fonction FileExists pour vérifier l'existence d'un fichier :
If FileExists(Filename) Then MsgBox "file exists." End If
Lecture et modification des propriétés d'un fichier
Parfois, il est nécessaire de connaître les propriétés des fichiers utilisés, par exemple la date de leur dernière modification et leur longueur.
L'appel suivant retourne des propriétés relatives à un fichier.
Dim Attr As Integer Attr = GetAttr(Filename)
La valeur de retour est fournie sous la forme d'un masque de bits qui peut prendre les valeurs suivantes :
- 1 : fichier en lecture seule ;
- 16 : nom d'un répertoire.
L'exemple suivant identifie le masque de bits du fichier test.txt et détermine s'il est en lecture seule ou s'il s'agit d'un répertoire. Si aucun de ces deux cas ne s'applique, FileDescription reçoit la chaîne "normal".
Dim FileMask As Integer Dim FileDescription As String FileMask = GetAttr("test.txt") If (FileMask AND 1) > 0 Then FileDescription = FileDescription & " read-only " End IF If (FileMask AND 16) > 0 Then FileDescription = FileDescription & " directory " End IF If FileDescription = "" Then FileDescription = " normal " End IF MsgBox FileDescription
La fonction SetAttr permet de modifier les propriétés d'un fichier. Vous pouvez donc définir un fichier comme étant en lecture seule à l'aide de l'appel suivant :
SetAttr("test.txt", 1)
L'appel suivant permet de supprimer un statut de lecture seule :
SetAttr("test.txt", 0)
Il est possible d'obtenir la date et l'heure de la dernière modification d'un fichier à l'aide de la fonction FileDateTime. La date est formatée ici selon les paramètres régionaux utilisés sur le système.
FileDateTime("test.txt") ' Provides date and time of the last file amendment.
La fonction FileLen détermine la longueur d'un fichier en octets (au format entier long).
FileLen("test.txt") ' Provides the length of the file in bytes
Écriture et lecture de fichiers texte
Apache OpenOffice Basic fournit un large éventail de méthodes permettant de lire et d'écrire des fichiers. Les explications suivantes concernent l'utilisation de fichiers texte (et non de documents texte).
Écriture de fichiers texte
Pour accéder à un fichier texte, vous devez d'abord l'ouvrir. Pour ce faire, il faut un descripteur de fichier libre, qui identifie clairement le fichier pour les accès ultérieurs.
La fonction FreeFile sert à créer un descripteur de fichier libre. Ce descripteur est passé comme paramètre à l'instruction Open, qui ouvre le fichier. Pour ouvrir un fichier de manière à pouvoir le spécifier comme fichier texte, l'appel Open est :
Open Filename For Output As #FileNo
Filename est une chaîne de caractères contenant le nom du fichier. FileNo est le descripteur créé par la fonction FreeFile.
Une fois le fichier ouvert, vous pouvez décrire l'instruction Print ligne par ligne :
Print #FileNo, "This is a test line."
FileNo désigne ici aussi le descripteur de fichier. Le second paramètre spécifie le texte à enregistrer comme ligne du fichier texte.
Une fois le processus d'écriture achevé, le fichier doit être refermé avec un appel Close :
Close #FileNo
Là encore, il faut spécifier le descripteur du fichier.
L'exemple suivant illustre l'ouverture, la description et la fermeture d'un fichier texte :
Dim FileNo As Integer Dim CurrentLine As String Dim Filename As String Filename = "c:\data.txt" ' Define file name FileNo = Freefile ' Establish free file handle Open Filename For Output As #FileNo ' Open file (writing mode) Print #FileNo, "This is a line of text" ' Save line Print #FileNo, "This is another line of text" ' Save line Close #FileNo ' Close file
Lecture de fichiers texte
Les fichiers texte sont lus de la même manière qu'ils sont écrits. L'instruction Open utilisée pour ouvrir le fichier contient l'expression For Input à la place de l'expression For Output et, au lieu de la commande Print permettant d'écrire des données, c'est la commande Line Input qui est utilisée pour lire les données.
Enfin, lorsque vous accédez à un fichier texte, l'instruction eof permet de déterminer si la fin de fichier a été atteinte :
eof(FileNo)
L'exemple suivant illustre la lecture d'un fichier texte :
Dim FileNo As Integer Dim CurrentLine As String Dim File As String Dim Msg as String ' Define filename Filename = "c:\data.txt" ' Establish free file handle FileNo = Freefile ' Open file (reading mode) Open Filename For Input As FileNo ' Check whether file end has been reached Do While not eof(FileNo) ' Read line Line Input #FileNo, CurrentLine If CurrentLine <>"" then Msg = Msg & CurrentLine & Chr(13) end if Loop ' Close file Close #FileNo Msgbox Msg
Les différentes lignes sont extraites dans une boucle Do While, enregistrées dans la variable Msg, puis affichées à la fin dans une boîte de message.
Content on this page is licensed under the Public Documentation License (PDL). |