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
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
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 (#43)
|
-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 (#46)
|
FileName se refiere a un directorio. Para ello use la función Dir.
|
|
El archivo o carpeta no existe (#45)
|
FileName No existe, o el directorio no existe o es un enlace simbólico.
|
|
Memoria insuficiente (1)
|
Si el sistema se quedó sin memoria.
|
|
/edit/error/ful l
|
Si donde iba a ser creado el FileName no hay espacio.
|
|
No se trata de una carpeta... (#49)
|
Si un componente es usado para un archivo y se encuentra en un directorio.
|
|
Error del sistema... (#42)
|
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.
|
Examples
' 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
Véase también