L'instruction Open permet la création et la consultation de fichiers textes clairs ou de fichiers binaires. La lecture de ces fichiers se fera de manière séquentielle ou directe suivant la méthode employée.
Le tableau suivant détaille les différents mode dutilisation de Open :
Mode |
Utilisation |
Type daccès |
Output | Ecrire dans un nouveau fichier séquentiel au format texte. Attention, ne permet pas dajouter du texte à un fichier existant mais écrase une version précédente. | Séquentiel, une ligne après lautre. |
Append | Ajouter du texte dans un fichier texte séquentiel existant. | Séquentiel, une ligne après lautre. |
Input | Lire du texte par accès séquentiel dans un fichier texte. | Séquentiel, une ligne après lautre. |
Random | Lit et ajoute des données dans un fichier à accès aléatoire par numéro de ligne. Format binaire non lisible | Aléatoire en précisant un numéro de ligne. |
Binary | Lit et ajoute des données au format binaire. Pas de notion de ligne, les données sont contigues. | Séquentiel par blocs doctets |
Création
et lecture dun fichier texte (Modes Output, Input, Append):
Si vous souhaitez créer un petit fichier texte pour y stocker quelques données de configuration, vous pouvez employer linstruction Open avec les modes Input, Output et Append. Vous créez alors un fichier .txt lisible par un éditeur quelconque (NotePad, WordPad, ). La lecture dans ce fichier se fera uniquement par une boucle parcourant les lignes une à une du début vers la fin :
Création
d'un fichier texte
Attention Output permet la création dun nouveau fichier. Si le fichier existe déjà, il est écrasé.
Le numéro #1 permet didentifier le fichier concerné par les futures commandes, si vous ouvrez plusieurs fichiers différents, veillez à gérer différents numéros.
'Ouverture
Open "c:\stage\test.txt" For Output As #1
'Ecriture
Print #1, "Ceci est ma première ligne!"
Print #1, ""
Print #1, "Et voilà la seconde!"
'Fermeture
Close #1
Lecture
dans un fichier texte
'Accès en lecture séquentielle sur un fichier texte avec Input
'Variable de récupération des chaînes
Dim Chaine As String
'Ouverture
Open "c:\stage\test.txt" For Input As #1
'Boucle de parcours séquentiel
Zone.Text = "" 'Vide la zone de texte
Do While Not EOF(1) 'Tant que la fin de fichier n'est pas atteinte
Input #1, Chaine
Zone.Text = Zone.Text & vbCrLf & Chaine
Loop
'Fermeture
Close #1
Ajout
dans un fichier texte :
'Ajout à un fichier existant
Il est nécessaire que le fichier existe déjà. Lajout se fait à la suite du texte existant.
'Ouverture
Open "c:\stage\test.txt" For Append As #1
'Ecriture
Print #1, "Ceci est une ligne ajoutée!"
Print #1, ""
Print #1, "Et en voilà une autre!"
'Fermeture
Close #1
Création
de fichiers à accès aléatoire (Mode Random):
Si vous cherchez à stocker un tableau de valeurs sapparentant à une table de données, vous souhaiterez certainement atteindre nimporte quelle ligne directement par un identifiant. Si lemploi dune vraie base de données ne vous satisfait pas, optez alors pour le mode Random, mais ATTENTION : ne ré-inventez pas la roue.
Ecriture et lecture dans un fichier binaire à accès aléatoire :
Chaque ligne de votre fichier est un enregistrement dont la structure est celle dune variable que vous créez. Dans lexemple ci dessous on souhaite stocker sur chaque ligne un code et un nom. On crée dabord un type de donnée structuré avec Type End Type. Puis dans les instructions Get on utilisera une variable de ce type pour lire les lignes.
Création
d'un type de données (notre enregistrement)
Private Type Enreg ' Désigne le type défini par l'utilisateur.
Code As Integer
Nom As String * 20
End Type
Création
d'un fichier à accès aléatoire
Dim Ligne As Enreg ' Déclare la variable.
Kill "c:\stage\rando.txt"
'Ouverture
La syntaxe Len = Len (Ligne) permet à Open de prendre connaissance de la longueur des lignes saisies
Le fichier créé contient donc des lignes de longueurs fixes
Open "c:\stage\rando.txt" For Random As #1 Len = Len(Ligne)
Put #1, 1, "Maître corbeau"
Put #1, 2, "Sur un arbre perché"
Put #1, 3, "Tenait en son bec"
Put #1, 4, "Un fromage"
Close #1
Lecture
d'un fichier à accès aléatoire
Dim Ligne As String * 15 ' Déclare la variable.
Zone.Text = ""
'Ouverture
Open "c:\stage\binary.txt" For Binary As #1 Len = Len(Ligne)
Do While Not EOF(1)
Get #1, , Ligne
Zone.Text = Zone.Text & vbCrLf & Ligne
Loop
Close #1
Création
et lecture de fichiers binaires (Mode Binary)
En mode binary, les données contigues et les lectures se font séquentiellement par blocs de x octets.
Création
d'un fichier binaire à accès séquentiel
Dim Ligne As Enreg ' Déclare la variable.
Kill "c:\stage\binary.txt"
'Ouverture
Open "c:\stage\binary.txt" For Binary As #1 Len = Len(Ligne)
Put #1, , "Maître corbeau"
Put #1, , "Sur un arbre perché"
Put #1, , "Tenait en son bec"
Put #1, , "Un fromage"
Close #1
Lecture
d'un fichier binaire à accès séquentiel :
Dim Ligne As String * 15 ' Déclare la variable de longueur fixe. La longueur représente la taille du bloc doctets lus par chaque instruction GET.
Zone.Text = ""
'Ouverture
Open "c:\stage\binary.txt" For Binary As #1 Len = Len(Ligne)
Do While Not EOF(1)
Get #1, , Ligne
Zone.Text = Zone.Text & vbCrLf & Ligne
Loop
Close #1