Ficheros
Grupo de comandos de instrucción que nos permiten operar con ficheros en disco.
Comando de instrucción del grupo Ficheros y directorios que informa de la existencia de un fichero del disco.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Senda del fichero cuya existencia queremos determinar. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
El comando retornará true (1) en esta variable local si el fichero existe o false (0) si no existe en disco.
Variable local en la que el comando retornará el tamaño del fichero (bytes) si éste existe.
Comprueba la existencia de un fichero en disco, devolviendo el tamaño de éste en bytes.
Si tenemos establecido un directorio por defecto con el comando de instrucción Cambiar directorio por defecto no es necesario definir la senda completa.
Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.
Comprobamos si existe el directorio documentostmp en la caché del cliente y en caso de no existir lo creamos.
Rem ( Creamos el directorio de documentos )
¿Existe fichero? ( sysCacheClientPath +"documentostmp", EXS, )
If ( ! EXS )
Crear directorio ( sysCacheClientPath +"documentostmp", Sí, )
Comando de instrucción del grupo Ficheros y directorios que copia un fichero en disco.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Senda del fichero que queremos copiar. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
Senda del fichero copia que ha de incluir el nombre del fichero. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.
Copia el fichero de origen en la senda de destino.
Si tenemos establecido un directorio por defecto con el comando de instrucción Cambiar directorio por defecto.
Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.
Copiamos el fichero original.pdf a original_copia.pdf dentro de la caché el cliente.
Copiar fichero ( sysCacheClientPath +"original.pdf", sysCacheClientPath +"original_copia.pdf", COPIADO )
If ( ! COPIADO )
Mensaje ( "Fichero original.pdf no copiado", Información, , )
Comando de instrucción del grupo Ficheros y directorios que elimina un fichero del disco.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Senda del fichero que queremos eliminar. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.
Elimina un fichero en disco.
Si tenemos establecido un directorio por defecto con el comando de instrucción Cambiar directorio por defecto no es necesario definir la senda completa.
Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.
Eliminamos el fichero original.pdf de la caché del cliente en caso de que exista.
¿Existe fichero? ( sysCacheClientPath +"original.pdf", EXISTE, TAMAÑO )
If ( EXISTE )
Eliminar fichero de disco ( sysCacheClientPath +"original.pdf", OK )
Comando de instrucción del grupo Ficheros y directorios que abre un fichero para lectura o escritura.
Origen de la instrucción: cualquiera.
Destino del subproceso: el mismo que el origen.
Manejador de fichero
Identificador del fichero. Nos permite referenciarlo a la hora de realizar operaciones de lectura o escritura.
Senda del fichero que queremos leer o escribir. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
Indicaremos qué operaciones realizaremos con el fichero abierto:
- Lectura/escritura: realizaremos operaciones de lectura y escritura en un fichero ya existente.
- Lectura/escritura (Crea o agrega): realizaremos operaciones de lectura y escritura en un fichero. Si existe el fichero previamente añade la información a la existente, si no existe crea el fichero.
- Lectura/escritura (Crea o limpia): realizaremos operaciones de lectura y escritura en un fichero. Si existe el fichero previamente lo sobreescribe borrando la información previa, si no existe crea el fichero.
- Lectura/escritura en modo texto: similar al modo de apertura "Lectura y escritura" pero además hace que en Windows convierta los terminadores de línea (\n) en (\r\n).
- Lectura/escritura en modo texto (Crea o agrega): similar al modo de apertura "Lectura/ escritura (Crea o agrega)" pero además hace que en Windows convierta los terminadores de línea (\n) en (\r\n).
- Lectura/escritura en modo texto (Crea o limpia): similar al modo de apertura "Lectura/ escritura (Crea o limpia)" pero además hace que en Windows convierta los terminadores de línea (\n) en (\r\n).
- Sólo lectura: realizaremos únicamente operaciones de lectura en un fichero ya existente.
El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.
Este parámetro nos permitirá elegir la codificación que tendrá el documento a generar. Al desplegar el combo se presentarán los tipos de codificación disponibles.
Abre un fichero en disco para realizar operaciones de lectura o escritura según lo hayamos configurado. Si el fichero existe podremos agregar la información o sobrescribir el fichero borrando la información previa. Si no existe podemos crearlo.
Las operaciones de lectura y escritura han de realizarse en el subproceso generado por la apertura del fichero.
Los comandos que realizan las operaciones de lectura y escritura son: fichero: grabar línea, que hacen uso del manejador para indicar en qué fichero se realizará la operación. De esta forma podemos anidar operaciones de lectura y escritura en distintos ficheros.
Las operaciones de lectura y escritura son secuenciales y se realizan línea a línea. Por tanto debemos hacer uso de un bucle por medio del comando For por lo que es posible componer el texto completo que se escribirá en el fichero y realizar la operación con una única ejecución del comando.
Si tenemos establecido un directorio por defecto con el comando de instrucción Cambiar directorio por defecto no es necesario definir la senda completa.
Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.
Seleccionamos el fichero que deseamos abrir de tipo *csv o *.txt.
Ventana de selección de fichero ( SND_FIC, OK_ACE, "*.csv, *.txt", tempPath() )
If ( ( !OK_ACE ) | isEmpty(SND_FIC) )
Set retorno proceso = NO
Finalizar proceso
Rem ( Abrimos el fichero para leerlo )
Fichero: abrir ( fichero, SND_FIC, Sólo lectura, OK_ABR, .Ninguno )
Comando de instrucción del grupo ficheros y directorios que permite escribir directamente en disco todo el contenido de un fichero a partir del contenido devuelto por una fórmula.
Origen de la instrucción: cualquiera.
Destino del subproceso: el mismo que el origen.
Identificador del fichero que queremos leer. Este habrá sido establecido previamente dentro del mismo proceso mediante el comando de instrucción Fichero: abrir.
Dato que queremos escribir el fichero. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.
Escribe directamente en disco todo el contenido de un fichero a partir del contenido devuelto por una fórmula.
No añade ningún carácter de fin de línea al grabar el contenido del fichero.
Pedimos al usuario que nos indique un directorio y creamos en él un fichero de texto que componemos en base a los registros de una tabla:
Rem ( Pedir el directorio donde crear el fichero )
Ventana de selección de directorio ( DIRECTORIO, BOK, )
If ( BOK )
Rem ( cargar los registros de una tabla )
Crear manejador de objeto ( bus, Búsqueda [email protected] app, No aplicable, )
Disparar objeto ( bus, 3º plano: Búsqueda servidor (síncrono), )
Rem ( Componer la cabecera del fichero de texto )
Set ( BODY, "Entidad" + ";" + "Año" + ";" + "Importe total" + "\n" )
Rem ( recorrer la lista e ir componiendo las líneas del fichero )
Recorrer lista solo lectura
Set ( BODY, "" + BODY + #ENTIDADES.NAME + ";" + #AÑO + ";" + #TOTAL + "\n" )
Rem ( Grabar el fichero )
Fichero: Abrir ( file, DIRECTORIO+"/prueba.csv", Lectura/escritura (Crea o limpia), , ISO-8859-1 )
Fichero: Grabar fichero ( file, BODY, OK )
Comando de instrucción del grupo Ficheros y directorios que escribe una línea en el fichero seleccionado.
Origen de la instrucción: cualquiera.
Destino del subproceso: el mismo que el origen.
Identificador del fichero que queremos escribir. Este habrá sido establecido previamente dentro del mismo proceso mediante el comando de instrucción fichero: abrir.
Dato que queremos escribir en la línea del fichero. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.
Si se deja vacía este parámetro o se resuelve con un 0, añadirá un carácter de fin de línea al grabarla. En función del sistema operativo en el que ejecutemos el proceso, como carácter de fin de línea se añadirán los caracteres siguientes:
Windows: \r\n
Linux: \n
OS X: \r
Si establecemos un 1, no añadirá un carácter de fin de línea al grabar la línea. Esto puede ser útil para componer nosotros todo el texto a grabar en una variable y graba una única línea con todo el texto.
Escribe una línea en el fichero abierto. Las operaciones de escritura han de realizarse en el subproceso generado por la apertura del fichero.
Para grabar varias líneas en un fichero de texto podemos hacerlo de dos formas con este mismo comando de instrucción de proceso:
2) Concatenar todo el texto a grabar en el fichero en una variable local del proceso y grabarlo una única vez con este comando de instrucción de proceso.
Es posible anidar operaciones de escritura en distintos ficheros, haciendo uso del manejador del fichero para seleccionar en aquél en el que queremos escribir.
Abrimos el fichero c:\fichero.txt para grabar los registros seleccionados de la rejilla REJ.
Fichero: abrir ( fichero, "c:\fichero.txt", Lectura/escritura (Crea o limpia), OK_ABR, .Ninguno )
Interfaz: procesar ( REJ, Seleccionadas )
Rem ( Recorrer en modo "sólo lectura" la lista para la exportación )
Recorrer lista sólo lectura
Rem ( Grabar la línea con los campos de la rejilla )
Fichero: grabar línea ( fichero, "" + rightJustified(#ID, 6, "0") + leftJustified(#NAME, 256, " "), OK, 0 )
Rem ( El campo ID con longitud 6 ajustado a la derecha y rellenado con ceros a la izquierda, el nombre con 256 caracteres )
Abrimos el fichero c:\fichero.txt para grabar los registros seleccionados de la rejilla REJ pero, en lugar de grabar cada registro línea a línea, lo que haremos será concatenarlo todo en una variable local y grabar línea una única vez:
Fichero: abrir ( fichero, "c:\fichero.txt", Lectura/escritura (Crea o limpia), OK_ABR, .Ninguno )
Interfaz: procesar ( REJ, Seleccionadas )
Set (TEXTO, "")
Rem ( Recorrer en modo "sólo lectura" la lista para la exportación )
Recorrer lista sólo lectura
Set ( TEXTO, TEXTO + "" + rightJustified(#ID, 6, "0") + leftJustified(#NAME, 256, " " + "\n")
Rem ( El campo ID con longitud 6 ajustado a la derecha y rellenado con ceros a la izquierda, el nombre con 256 caracteres )
Rem ( Grabar la línea con los campos de la rejilla )
Fichero: grabar línea ( fichero, , OK, 1 )
Comando de instrucción del grupo ficheros y directorios que lee el contenido completo del fichero seleccionado.
Origen de la instrucción: cualquiera.
Destino del subproceso: el mismo que el origen.
Identificador del fichero que queremos leer. Este habrá sido establecido previamente dentro del mismo proceso mediante el comando de instrucción Fichero: abrir.
El comando retornará en esta variable local el contenido completo del fichero.
El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.
Lee todo el contenido del fichero seleccionado. Esta operación de lectura han de realizarse en el subproceso generado por la apertura del fichero.
Es posible anidar operaciones de lectura en distintos ficheros, haciendo uso del manejador del fichero para seleccionar aquél del que queremos leer.
Pedimos al usuario que nos indique un fichero de texto plano a leer y leemos su contenido:
Ventana de selección de fichero ( FICHERO, BOK, "*.txt *.csv *.xml", "" )
If ( BOK )
Fichero: Abrir ( file, FICHERO, Solo lectura, BOK, .Ninguno )
Fichero: Leer fichero ( file, SZ_TEXTO, BOK )
Comando de instrucción del grupo Ficheros y directorios que lee una línea en el fichero seleccionado.
Origen de la instrucción: cualquiera.
Destino del subproceso: el mismo que el origen.
Identificador del fichero que queremos leer. Este habrá sido establecido previamente dentro del mismo proceso mediante el comando de instrucción Fichero: abrir.
El comando retornará en esta variable local el dato leído en la línea.
El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.
Lee una línea del fichero abierto. Las operaciones de lectura han de realizarse en el subproceso generado por la apertura del fichero.
Las operaciones de lectura y escritura son secuenciales y se realizan línea a línea. Por tanto debemos hacer uso de un bucle por medio del comando For condicionado a la realización de la operación de lectura o escritura, para leer o escribir varias líneas.
Es posible anidar operaciones de lectura en distintos ficheros, haciendo uso del manejador del fichero para seleccionar aquél del que queremos leer.
En la versión de 32 bits no se podrán leer líneas cuyo tamaño supere los 128 Mb.
Abrimos el fichero c:\fichero.txt para leer su primera linea llevando el contenido a la variable local LINEA.
Fichero: abrir ( fichero, “C:\fichero.txt”, Sólo lectura, OK_ABR, .Ninguno )
Fichero: leer línea ( fichero, LINEA, OK)
Comando de instrucción del grupo Ficheros y directorios que informa de los atributos básicos de un fichero en disco.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Senda del fichero cuyos atributos básicos queremos conocer. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
Variable local en la que el comando retornará la fecha de última modificación del fichero.
Variable local en la que el comando retornará la hora de última modificación del fichero.
Variable local en la que el comando retornará el tamaño del fichero (bytes).
Informa de los atributos básicos de un fichero en disco: fecha y hora de última modificación del fichero y el tamaño en bytes.
Si tenemos establecido un directorio por defecto con el comando de instrucción Cambiar directorio por defecto no es necesario definir la senda completa.
Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.
Leemos de la caché del cliente el fichero original_copia_old.pdf guardando los valores de sus atributos en las variables locales correspondientes.
Get atributos del fichero ( sysCacheClientPath +"original_copia_old.pdf", FECHA, HORA, TAMAÑO )
Comando de instrucción del grupo Ficheros y directorios que renombra un fichero del disco.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Senda del fichero que queremos renombrar. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
Nueva senda de destino del fichero. Este parámetro puede ser una cadena o literal, un campo, una variable, el retorno de una función, etc.
El comando retornará true (1) en esta variable local si ha podido realizar la operación o false (0) si no ha podido hacerlo.
Renombra un fichero en disco. El fichero será movido si la senda de destino es distinta a la senda de origen.
En ambas sendas se ha de definir el nombre del fichero.
Si tenemos establecido un directorio por defecto con el comando de instrucción Cambiar directorio por defecto no es necesario definir la senda completa.
Las sendas pueden estar definidas según el estilo de cualquiera de los sistemas operativos pero se han de tener en cuenta las diferencias en cuanto a la definición de la raíz del sistema.
Renombramos el fichero original_copia.pdf de la caché del cliente por el nombre original_copia_old.pdf.
Renombrar o mover fichero ( sysCacheClientPath +"original_copia.pdf", sysCacheClientPath +"original_copia_old.pdf", OK )
Última actualización 2mo ago