OPEN
Stream = OPEN FileName FOR [ READ | INPUT ] [ WRITE | OUTPUT ] [ CREATE | APPEND ] [ WATCH ]
Ouvre un fichier en lecture, écriture, création ou ajout de données. Le fichier doit exister, sauf si le mot clé
CREATE est spécifié.
- Si le mot clé CREATE est spécifié, alors le fichier est créé, ou vidé s'il existe déjà.
- Si le mot clé APPEND est spécifié, alors l'index de fichier est placé à la fin du fichier juste après que le fichier soit ouvert.
- Si les mots clé READ ou WRITE sont spécifiés, alors les entrées-sorties ne sont pas tamponnées.
- Si les mots clé INPUT ou OUTPUT sont spécifiés, alors les entrées-sorties sont tamponnées.
- Si le mot clé WATCH est spécifié, le fichier est géré par l'interpréteur :
Si l'ouverture du fichier est réussie, un
objet flux est retourné à la
variable de flux
Stream.
 |
Par défaut, les flux sont tamponnés.
Si vous voulez disposer d'un flux non tamponné flux,vous devez utiliser explicitement les mots clés READ ou WRITE.
|
 |
A l'iverse des autres dialectes Basic, Gambas n'efface jamais un fichier ouvert par le mot clé WRITE par exemple.
Aussi si le nouveau contenu est plus petit que l'ancien, un résidu de l'ancienne version demeurera à la fin du nouveau fichier.
Pour éviter cela, ouvrez le fichier en incluant le mot clé CREATE.
|
Erreurs
| Message | Description |
|---|
|
Access forbidden (43)
|
L'accès au fichier demandé n'est pas autorisé, ou la permission de recherche est refusée pour l'un des répertoires dans le préfixe de chemin ou dans le chemin, ou le fichier n'existe pas encore et les droits d'accès au répertoire parent ne sont pas établis.
|
|
File is a directory (46)
|
FileName se réfère à un répertoire. utilisez la fonction Dir à la place!
|
|
File or directory does not exist (45)
|
FileName n'existe pas, ou un composant répertoire du chemin n'existe pas ou est un lien symbolique rompu.
|
|
Out of memory (1)
|
La capacité de mémoire système est dépassée.
|
|
Device is full (37)
|
FileName devait être créé mais le périphérique contenant FileName n'a pas de place pour le nouveau fichier.
|
|
Not a directory... (49)
|
Un composant utilisé comme répertoire dans FileName n'est pas, en fait, un répertoire.
|
|
System error... (42)
|
Autres erreus système possibles:
- Liens symboliques trop nombreux lors de la résolution de FileName.
- Le process a déjà atteint le nombre maximum de fichiers ouverts .
- La limite maximale de nombre de fichiers ouverts a été atteinte par le système.
- FileName se réfère a un fichier périférique special et aucun périférique correspondant n'existe.
- Le nom de fichier correspond à un pipe nommé et aucun process n'a ouvert le fichier en lecture.
- FileName se réfère à un fichier sur un système en lecture seule et un accès en écriture a été requis.
- FileName se réfère à une image éxécutable en cours d'éxécution et un accès en écriture a été requis.
|
Exemple
' Affiche le contenu d'un fichier texte à l'écran
DIM hFile AS File
DIM sLine AS String
hFile = OPEN "/etc/passwd" FOR INPUT
WHILE NOT Eof(hFile)
LINE INPUT #hFile, sLine
PRINT sLine
WEND
' Surveillance d'un port série
DIM hFile AS File
hFile = OPEN "/dev/ttyS0" FOR READ WRITE WATCH
...
PUBLIC SUB File_Read()
DIM iByte AS Byte
READ #hFile, iByte
PRINT "Got one byte: "; iByte
END
' Lecture de données depuis un fichier BMP, sait utiliser le format little-endian :
DIM hFile AS File
DIM iData AS Integer
hFile = OPEN "image.bmp" FOR INPUT
hFile.ByteOrder = gb.LittleEndian
...
READ #hFile, iData