FileHandle
La clase FileHandle
tiene funciones que permiten leer secuencialmente o añadir contenido a un objeto abierto File
. Un manejador de archivo puede acceder a cualquier parte de un documento.
Los objetos manejadores de archivos se crean con la función file.open()
.
Para leer o escribir un documento completo de una vez, puede considerar el uso de las funciones file.getText() y file.setText().
Gracias al objeto estándar 4D refcounting, un manejador de archivo se elimina automáticamente cuando deja de ser referenciado y, por tanto, el objeto File
solicitado se cierra automáticamente. Por lo tanto, con los gestores de archivos no hay que preocuparse por el cierre de los documentos.
Ejemplo
var $f : 4D.File
var $fhandle : 4D.FileHandle
$f:=Folder(Database folder).file("example.txt")
//Writing line by line from the start
$fhandle:=$f.open("write")
$text:="Hello World"
For ($line; 1; 4)
$fhandle.writeLine($text+String($line))
End for
//Writing line by line from the end
$fhandle:=$f.open("append")
$text:="Hello New World!"
For ($line; 1; 4)
$fhandle.writeLine($text+String($line))
End for
//Reading using a stop character and an object parameter
$o:=New object()
$o.mode:="read"
$o.charset:="UTF-8"
$o.breakModeRead:=Document with CRLF
$stopChar:="!"
$fhandle:=$f.open($o)
$text:=$fhandle.readText($stopChar)
//Reading line by line
$lines:=New collection
$fhandle:=$f.open("read")
While (Not($fhandle.eof))
$lines.push($fhandle.readLine())
End while
For ($line; 1; 4)
$fhandle.writeLine($text+String($line))
End for
//Lectura utilizando un carácter de parada y un parámetro objeto
$o:=New object()
$o.mode:="read"
$o.charset:="UTF-8"
$o.breakModeRead:=Document with CRLF
$stopChar:="!"
$fhandle:=$f.open($o)
$text:=$fhandle.readText($stopChar)
//Lectura línea a línea
$lines:=New collection
$fhandle:=$f.open("read")
While (Not($fhandle.eof))
$lines.push($fhandle.readLine())
End while
Objeto FileHandle
Los objetos manejadores de archivos no pueden ser compartidos.
.breakModeRead : Text el modo de procesamiento de los saltos de línea utilizados al leer el archivo |
.breakModeWrite : Text el modo de procesamiento de los saltos de línea utilizados al escribir en el archivo |
.charset : Text el conjunto de caracteres utilizado al leer o escribir en el archivo |
.eof : Boolean True es el offset< que ha llegado al final del archivo, y False en caso contrario |
.getSize() : Real devuelve el tamaño actual del documento, expresado en bytes |
.mode: Text el modo en el que se creó el gestor de archivos: "leer", "escribir" o "añadir" |
.offset : Real el desplazamiento actual del flujo de datos (posición dentro del documento) |
.readBlob( bytes : Real ) : [4D.Blob](BlobClass) devuelve un blob de un tamaño de bytes del archivo, empezando por la posición actual |
.readLine() : Text devuelve una línea de texto desde la posición actual hasta que se encuentre un delimitador de fin de línea o se llegue al final del documento |
.readText( { stopChar : Text } ) : Text devuelve el texto del archivo, empezando por la posición actual hasta que se encuentre la primera cadena stopChar (si se ha pasado) o se llegue al final del archivo |
.setSize( size: Real) define un nuevo size en bytes para el documento |
.writeBlob( blob : 4D.Blob ) escribe blob en el archivo, empezando por la posición actual |
.writeLine( lineOfText : Text ) escribe lineOfText contenido en la posición actual e inserta un delimitador de fin de línea |
.writeText( textToWrite : Text ) escribe textToWrite contenido en la posición actual y no inserta un delimitador de fin de línea |
.breakModeRead
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.breakModeRead : Text
Descripción
La propiedad .breakModeRead
devuelve el modo de procesamiento de los saltos de línea utilizados al leer el archivo.
La propiedad .breakModeRead
puede ser definida en la creación del handle con la función file.open()
(ver la función .open()
para más información). Por defecto es "native".
La propiedad
.breakModeRead
siempre contiene un valor de texto, incluso si la opción.open()
fue definida utilizando un número (constante).
Esta propiedad es de sólo lectura.
.breakModeWrite
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.breakModeWrite : Text
Descripción
La propiedad .breakModeWrite
devuelve el modo de procesamiento de los saltos de línea utilizados al escribir en el archivo.
La propiedad .breakModeWrite
puede ser definida en la creación del handle con la función file.open()
(ver la función .open()
para más información). Por defecto es "native".
La propiedad
.breakModeWrite
siempre contiene un valor texto, incluso si la opción.open()
fue definida utilizando un número (constante).
Esta propiedad es de sólo lectura.
.charset
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.charset : Text
Descripción
La propiedad .charset
devuelve el conjunto de caracteres utilizado al leer o escribir en el archivo.
El conjunto de caracteres puede definirse en la creación del gestor con la función file.open()
. Por defecto es "UTF-8".
Esta propiedad es de sólo lectura.
.eof
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.eof : Boolean
Descripción
La propiedad .eof
devuelve True es el offset<
que ha llegado al final del archivo, y False en caso contrario.
Esta propiedad es de sólo lectura.
.getSize()
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.getSize() : Real
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Real | <- | Tamaño del documento en bytes |
|
Descripción
La función .getSize()
devuelve el tamaño actual del documento, expresado en bytes.
Esta función devuelve el mismo valor que la propiedad (.size) de la clase
File
.
Ver también
.mode
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.mode: Text
Descripción
La propiedad .mode
devuelve el modo en el que se creó el gestor de archivos: "leer", "escribir" o "añadir".
El modo se puede definir en la creación del manejador con la función file.open()
. Por defecto es "leer".
Esta propiedad es de sólo lectura.
.offset
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.offset : Real
Descripción
La propiedad .offset
devuelve el desplazamiento actual del flujo de datos (posición dentro del documento). El valor del desplazamiento se actualiza automáticamente después de las operaciones de lectura y escritura.
Definir el .offset
cambiará su valor actual.
- Si el valor pasado es negativo, el
.offset
se define al inicio del archivo (cero). - Si el valor pasado es mayor que el tamaño del archivo, el
.offset
se define al final del archivo (tamaño del archivo).
Esta propiedad es lectura/escritura.
.readBlob()
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.readBlob( bytes : Real ) : 4D.Blob
Parámetros | Tipo | Descripción | |
---|---|---|---|
bytes | Real | -> | Número de bytes a leer |
Result | 4D.Blob | <- | Bytes leídos del archivo |
|
Descripción
La función .readBlob()
devuelve un blob de un tamaño de bytes del archivo, empezando por la posición actual .
Cuando se ejecuta esta función, la posición actual (.offset) se actualiza después del último byte leído.
Ver también
.readLine()
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.readLine() : Text
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Text | <- | Línea de texto |
|
Descripción
La función .readLine()
devuelve una línea de texto desde la posición actual hasta que se encuentre un delimitador de fin de línea o se llegue al final del documento.
Cuando se ejecuta esta función, la posición actual (.offset) se actualiza.
Cuando esta función se ejecuta por primera vez en un manejador de archivo, todo el contenido del documento se carga en un buffer.
Ver también
.readText()
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.readText( { stopChar : Text } ) : Text
Parámetros | Tipo | Descripción | |
---|---|---|---|
stopChar | Text | -> | Caracter(es) en los que dejar de leer |
Result | Text | <- | Texto del archivo |
|
Descripción
La función .readText()
devuelve el texto del archivo, empezando por la posición actual hasta que se encuentre la primera cadena stopChar (si se ha pasado) o se llegue al final del archivo.
Esta función reemplaza todos los delimitadores originales de final de línea. Por defecto, se utiliza el delimitador nativo, pero se puede definir otro delimitador al abrir el manejador del archivo definiendo la propiedad .breakModeRead
.
La cadena de caracteres stopChar no se incluye en el texto devuelto. Si se omite el parámetro stopChar, se devuelve todo el texto del documento.
Cuando se ejecuta esta función, el (.offset) se coloca justo después de la cadena stopChar.
Si el parámetro stopChar se pasa y no se encuentra, .readText()
devuelve una cadena vacía y el .offset se deja intacto.
Cuando esta función se ejecuta por primera vez en un manejador de archivo, todo el contenido del documento se carga en un buffer.
Ver también
.setSize()
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.setSize( size: Real)
Parámetros | Tipo | Descripción | |
---|---|---|---|
size | Real | -> | Nuevo tamaño del documento en bytes |
|
Descripción
La función .setSize()
define un nuevo size en bytes para el documento.
Si el valor del size es menor que el tamaño actual del documento, el contenido del documento se trunca desde el principio para obtener el nuevo size.
Ver también
.writeBlob()
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.writeBlob( blob : 4D.Blob )
Parámetros | Tipo | Descripción | |
---|---|---|---|
blob | 4D.Blob | -> | Blob a escribir en el archivo |
|
Descripción
La función .writeBlob()
escribe blob en el archivo, empezando por la posición actual .
Cuando se ejecuta esta función, la posición actual (.offset) se actualiza después del último byte escrito.
Ver también
.writeLine()
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.writeLine( lineOfText : Text )
Parámetros | Tipo | Descripción | |
---|---|---|---|
lineOfText | Text | -> | Texto a escribir |
|
Descripción
La función .writeLine()
escribe lineOfText contenido en la posición actual e inserta un delimitador de fin de línea (a diferencia de la función .writeText()). Por defecto, se utiliza el delimitador de fin de línea, pero se puede definir otro delimitador al abrir el manejador del archivo definiendo la propiedad .breakModeRead
.
Cuando se ejecuta esta función, la posición actual (.offset) se actualiza después del último delimitador de fin de línea.
Ver también
.breakModeWrite, .readLine(), .writeText()
.writeText()
Histórico
Versión | Modificaciones |
---|---|
v19 R7 | Añadidos |
.writeText( textToWrite : Text )
Parámetros | Tipo | Descripción | |
---|---|---|---|
textToWrite | Text | -> | Texto a escribir |
|
Descripción
La función .writeText()
escribe textToWrite contenido en la posición actual y no inserta un delimitador de fin de línea (a diferencia de la función .writeLine()). Esta función reemplaza todos los delimitadores originales de final de línea. This function replaces all original end-of-line delimiters.
Cuando se ejecuta esta función, la posición actual (.offset) se actualiza después del siguiente delimitador de fin de línea.