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
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
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
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
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()
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/ .../
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
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
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
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
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
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