Access
Saber si tenemos acceso a un fichero (bien por que no exista, bien por permisos)
Acceso=access(path,modo)

El modo puede ser '
gb.read ====> lectu ra
gb.write ====> escritura
gb.exec ====> ejecu ción
Y además se pueden combinar
print access(system.home & "/mifichero",gb.write or gb.exec)

Dir
Devuelve un array con los ficheros que cumplen la máscara especificada .
La máscara puede ser
* ====> cualquiera
? ====> un caracter
[abc] ====> existe cualquier caracter especificado entre corchetes
[a-z] ====> cualquier caracter en el intervalo especificado
[^a- z] ====> cualquier caracter que no esté en el intervalo

Dim Fichero as string
for each Fichero in dir(system.home, "*")
print Fichero
next


Rdir
Igual que dir salvo que incluye subdirectorios.

Exist
Devuelve true si el fichero o directorio existe

dim Fichero as string
Fichero ="mifichero.txt "
if exist(Fichero) then
...
endif


Isdir
Devuelve true si el directorio especificado existe

print isdir(system.home) ==== > true
print isdir(system.home & "/fichero. txt") = ===> false


stat
Devuelve información de u n fich ero o directorio.
La información que se puede obtener es
Group ====> gru po al que perten ece
User ====> usu ario a l que pertenece
Hidden ====> oculto o no
LastAccess ====> último acceso
LastCha nge ====> último cambio
LastUpdate ====> última actu alización
Node ====> nodo actual
SetGid ====> gid actual
SetUid ====> uid actual
Size ====> tamaño en bytes
Sticky ====> si está activado stickybit
Time ====> hora
Type ====> tipo de fichero

print stat("/home").type ==== > gb.directory
print round(stat("/home").size/1024) & "K" ====> tamaño en kb


Temp
Devuelve el nombre de un fichero temporal único y será creado en /tmp

Dim ficheroaux as string
Ficheroaux=temp()


Open
Abrir un fichero en uno de los siguientes modos
read ====> lectura
write ====> escritura
create ====> creación
append ====> añadir datos. El puntero se situa al final nada mas abrir
watch ====>
direct ====> abrir sin usar buffer. La lectura/escritura es directa al fichero
big ====> usar BIG ENDIAN
little ====> usar LITTLE ENDIAN

Dim Descriptor as FILE
Descriptor=open "fichero" for read/write/create/ .../


Eof
Devuelve true si estamos al final de fichero
open fichero for read as Fich
do while not eof(Fich)
...
...
loop


line input
Lee una línea. Se utiliza como delimitador el salto de línea LF chr(10 ). Por esta razón NO DEBE USARSE con
ficheros binarios. Para estos hay que usar READ.

Dim Linea as string
line input #Descriptor , Linea


Read / Write
Lee una cantidad de bytes de un fichero y los almacena en una variable. El tipo de esa variable define el tipo
de dato que se ha leído.

read #descriptor,Variable,longitud

Si Variable es de tipo string y no se especifica longitud se lee el string entero.
Si Variable es de tipo string y longitud es negativo se empieza a leer desde la derecha

seek
Mueve el puntero X bytes hacia adelante. Si la longitud es negativa lo mueve hacia atrás.
seek #descriptor,posicion

seek #descriptor,0 === ir al principio
seek #descriptor,lof(f ichero) ====> muevel al final
seek #descriptor,-100 ====> mueve 10 0 bytes hacia atrás desde el final de archivo


flush
Graba el contenido del buffer al fichero. Usualmente se hace antes de cerrar un archivo tras haber hecho
cambios.
flush #descriptor

close
Cierra un fichero
close # descriptor


copy
copia un fichero no abierto a otro lugar No se pueden copiar directorios recursivamente.
copy path_origen to path destino

copy system.home &/ "f ichero. txt" to user.home &/ "fichero_renombrado. txt"

kill
Borra un fichero no abierto

kill "fichero"

rename
Renombra un fichero no abierto.

rename "fichero" as "nuevonombre"

mkdir
Crea un directorio.

mkdir " Directorio"

rmdir
Borra un directorio

rmdir " Directorio"

Un ejemplo
Leer registros de una tabla y dejarlos en un fichero secuencial. Se entiende que ya existe una conexión
activa a base de datos.

Dim Rec as result, F as file
Rec=Conexion.exec("select nombre,direccion, telefono from clientes") 'abrir el recordset
F=open "fichero.dat" for create
do while Rec.available
print #F,Rec!Nombre, Rec!direccion, Rec!telefono
Rec.movenext
loop


Al escribir separando por coma los campos quedan separados por un tabulador.

Otro ejemplo
Insertar en una tabla datos procedentes de un fichero de datos. Se entiende una conexión activa a base de datos

Dim F as file, Linea a sstring, Campos as string[]
F=open "fichero.dat" for read
while not eof( F)
line input #F,Linea
Campos=split(Linea, key.tab )
Conexion.exec("insert into tabla (nombre ,direccion,telefono) values ( '" & campos[0] & "',' " & campos[1] & "','" & campos[2] & ")")
wend