FileHandle
La clase FileHandle
tiene funciones que permiten leer secuencialmente o añadir contenido a un objeto File
abierto. Un manejador de archivo puede acceder a cualquier parte de un documento.
Los objetos de tipo File handle 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 refcounting estándar de objetos de 4D, un manejador de archivo se borra automáticamente cuando deja de estar 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.
Los recursos de los objetos, como los documentos, se liberan cuando ya no existen referencias en la memoria, lo que ocurre, por ejemplo, al final de la ejecución del método para las variables locales. Si desea "forzar" la liberación de los recursos del objeto en cualquier momento, puede anular sus referencias.
Ejemplo
var $f : 4D.File
var $fhandle : 4D.FileHandle
$f:=Folder(Database folder).file("example.txt")
//Escribiendo línea a línea desde el principio
$fhandle:=$f.open("write")
$text:="Hello World"
For ($line; 1; 4)
$fhandle.writeLine($text+String($line))
End for
//Escribir línea a línea desde el final
$fhandle:=$f.open("append")
$text:="Hello World"
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 utilizado al leer el archivo |
.breakModeWrite : Text el modo de procesamiento de los saltos de línea utilizado al escribir en el archivo |
.charset : Text el conjunto de caracteres utilizado al leer o escribir en el archivo |
.eof : Boolean True si el offset ha llegado al final del archivo, y False en caso contrario |
.file : 4D.File el objeto 4D.File sobre el que se ha creado el manejador |
.getSize() : Real devuelve el tamaño actual del documento, expresado en bytes |
.mode : Text el modo en que se creó el manejador de fichero: "read", "write", o "append" |
.offset : Real el desplazamiento actual del flujo de datos (posición dentro del documento) |
[.readBlob( bytes : Real ) : 4D.Blob ](#readblob) 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 encuentra un delimitador de fin de línea o se alcanza el final del documento |
.readText( { stopChar : Text } ) : Text devuelve el texto del archivo, comenzando desde 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 tamaño de size en bytes para el documento |
.writeBlob( blob : 4D.Blob ) escribe blob en el archivo, comenzando desde la posición actual |
.writeLine( lineOfText : Text ) escribe contenido lineOfText en la posición actual e inserta un delimitador de fin de línea |
.writeText( textToWrite : Text ) escribe el contenido de textToWrite en la posición actual y no inserta un delimitador de fin de línea |
.breakModeRead
Historia
Lanzamiento | Modificaciones |
---|---|
19 R7 | Añadidos |
.breakModeRead : Text
Descripción
La propiedad .breakModeRead
devuelve el modo de procesamiento de los saltos de línea utilizado al leer el archivo.
La propiedad .breakModeRead
se puede definir 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 solo lectura.
.breakModeWrite
Historia
Lanzamiento | Modificaciones |
---|---|
19 R7 | Añadidos |
.breakModeWrite : Text
Descripción
La propiedad .breakModeWrite
devuelve el modo de procesamiento de los saltos de línea utilizado al escribir en el archivo.
La propiedad .breakModeWrite
se puede definir 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 solo lectura.
.charset
Historia
Lanzamiento | Modificaciones |
---|---|
19 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 manejador con la función file.open()
. Por defecto es "UTF-8".
Esta propiedad es de solo lectura.
.eof
Historia
Lanzamiento | Modificaciones |
---|---|
19 R7 | Añadidos |
.eof : Boolean
Descripción
La propiedad .eof
devuelve True si el offset
ha llegado al final del archivo, y False en caso contrario.
Esta propiedad es de solo lectura.
.file
.file : 4D.File
Descripción
La propiedad .file
devuelve el objeto 4D.File sobre el que se ha creado el manejador.
Esta propiedad es de solo lectura.
.getSize()
Historia
Lanzamiento | Modificaciones |
---|---|
19 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
Historia
Lanzamiento | Modificaciones |
---|---|
19 R7 | Añadidos |
.mode : Text
Descripción
La propiedad .mode
devuelve el modo en que se creó el manejador de fichero: "read", "write", o "append".
El modo puede definirse en la creación del manejador con la función file.open()
. Por defecto es "leer".
Esta propiedad es de solo lectura.
.offset
Historia
Lanzamiento | Modificaciones |
---|---|
19 R7 | Añadidos |
.offset : Real