OPEN
Flujo = OPEN Archivo por abrir FOR [ READ | INPUT ] [ WRITE | OUTPUT ] [ CREATE | APPEND ] [ WATCH ]
Abre archivos como flujos para leer, Escribir, crear o añadir datos. Debe especificarse aunque sea una un comando despues del
FOR por ejemplo:
- Si se especifica CREATE, Entonces crea un archivo o lo reemplaza por uno nuevo si existe.
- Si se especifica APPEND, entonces el puntero es movido al final del archivo después de que este se abra.
- Si se especifica READ o WRITE keyword are specified, entonces la entrada-salida se escribe directamente al archivo, no se mete en buffer.
- Si se especifica INPUT or OUTPUT, entonces la entrada-salida son almacenadas en un buffer.
- Si se especifica WATCH, el archivo se ve sin el interprete :
- Si al menos un bite se puede leer del archivo, entonces se llama a event handler File_Read().
- Si al menos un bite se puede leer del archivo, Entonces se llama a evento handler File_Write() .
Si al abrir termina correctamente, el
Flujo objeto retorna
variable Stream.
 |
Predeterminadamente, los streams son almacenados en buffer.
Si usted quiere que no sea almacenado el Flujo, debe usar los comandos READ o WRITE.
|
 |
A diferencia de otros lenguajes Basic, Gambas nunca borra el archivo, cuando es abierto por WRITE . Por eso si el archivo es más pequeño que al anterior, quedará basura en el final del archivo, para evitar esto puede usar el comando CREATE después del WRITE
|
Errores
| Mensaje | Descripción |
|---|
|
Acceso denegado (
|
-Cuando el acceso a la carpeta no esta permitido, o se le niega los permisos en carpetas anteriores.
-Si no existe y es abierto por el comando WRITE.
|
|
El archivo es una carpeta (
|
FileName se refiere a un directorio. Para ello use la función Dir.
|
|
El archivo o carpeta no existe (
|
FileName No existe, o el directorio no existe o es un enlace simbólico.
|
|
Memoria insuficiente (1)
|
Si el sistema se quedó sin memoria.
|
|
error/ful l
|
Si donde iba a ser creado el FileName no hay espacio.
|
|
No se trata de una carpeta... (
|
Si un componente es usado para un archivo y se encuentra en un directorio.
|
|
Error del sistema... (
|
Otros posibles errores:
- Si se encuantran muchos enlaces simbolicos en la solucion de FileName.
- Si el proceso está al maximo de archivos abiertos.
- Si se llega al máximo de archivos abiertos soportados por el sistema.
- FileName se refiere a un dispositivo especifico que no esta montado en ese momento.
- Si el FileName es una tubería pipe Y el proceso no puede abrirlo para leerlo.
- FileName Si el archivo es solo lectura y el archivo ocupe escribirse.
- FileName Si se refiere a una imagen ejecutable que se encuentra actualmente en ejecución y se pidió el acceso de escritura.
|
Ejemplo
' Escribir el contenido de un archivo de texto en la pantalla
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
' Ver un puerto serial
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
' Leer de un archivo BMP, sabiendo que usa el formato little-endian:
DIM hFile AS File
DIM iData AS Integer
hFile = OPEN "image.bmp" FOR INPUT
hFile.ByteOrder = gb.LittleEndian
...
READ #hFile, iData