File
Los objetos File
son creados con el comando File
. Contienen referencias a archivos de disco que pueden o no existir realmente en el disco. Por ejemplo, cuando ejecuta el comando File
para crear un nuevo archivo, se crea un objeto File
válido pero en realidad nada se guarda en el disco hasta que se llama a la función file.create( )
.
Ejemplo
El siguiente ejemplo crea un archivo de preferencias en la carpeta del proyecto:
var $created : Boolean
$created:=File("/PACKAGE/SpecialPrefs/"+Current user+".myPrefs").create()
Rutas de acceso
Los objetos File
soportan varios nombres de ruta, incluyendo la sintaxis filesystems
o posix
. Los nombres de ruta soportados se detallan en la página Rutas de acceso.
Objeto File
.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.File copia el objeto File en la destinationFolder especificada |
.create() : Boolean crea un archivo en el disco según las propiedades del objeto File |
.createAlias( destinationFolder : 4D.Folder ; aliasName : Text { ; aliasType : Integer } ) : 4D.File crea un alias (macOS) o un acceso directo (Windows) |
.creationDate : Date la fecha de creación del archivo |
.creationTime : Time la hora de creación del archivo |
.delete() borra el archivo |
.exists : Boolean true si el archivo existe en el disco |
.extension : Text la extensión del nombre del archivo (si lo hay) |
.fullName : Text el nombre completo del archivo, incluyendo su extensión (si la hay) |
.getAppInfo() : Object devuelve el contenido de un archivo de información .exe, .dll o .plist como un objeto |
.getContent( ) : 4D.Blobdevuelve un objeto 4D.Blob que contiene todo el contenido de un archivo |
.getIcon( { size : Integer } ) : Picture el icono del archivo |
.getText( { charSetName : Text { ; breakMode : Integer } } ) : Text .getText( { charSetNum : Integer { ; breakMode : Integer } } ) : Text devuelve el contenido del archivo como texto |
.hidden : Boolean true si el archivo está configurado como "oculto" a nivel de sistema |
.isAlias : Boolean true si el archivo es un alias, un acceso directo o un enlace simbólico |
.isFile : Boolean siempre true para un archivo |
.isFolder : Boolean siempre false para un archivo |
.isWritable : Boolean true si el archivo existe en el disco y es modificable |
.modificationDate : Date la fecha de la última modificación del archivo |
.modificationTime : Time la hora de la última modificación del archivo |
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.File mueve o renombra el objeto File en la carpeta especificada destinationFolder |
.name : Text el nombre del archivo, sin extensión (si la hay) |
.open( { mode : Text } ) : 4D.FileHandle .open( { options : Object } ) : 4D.FileHandle crea y devuelve un nuevo objeto 4D.FileHandle en el archivo, en el modo especificado o con las opciones especificadas |
.original : 4D.File .original : 4D.Folder |
.parent : 4D.Folder el objeto carpeta padre del archivo |
.path : Text la ruta POSIX del archivo |
.platformPath : Text la ruta del archivo expresada con la sintaxis de la plataforma actual |
.rename( newName : Text ) : 4D.File renombra el archivo con el nombre que se ha pasado en newName y devuelve el objeto File renombrado |
.setAppInfo( info : Object ) escribe las propiedades info como contenido de información de un archivo .exe, .dll o .plist |
.setContent ( content : Blob ) reescribe todo el contenido del archivo utilizando los datos almacenados en el BLOB content |
.setText ( text : Text {; charSetName : Text { ; breakMode : Integer } } ) .setText ( text : Text {; charSetNum : Integer { ; breakMode : Integer } } ) escribe text como el nuevo contenido del archivo |
.size : Real el tamaño del archivo expresado en bytes |
File
Historia
Lanzamiento | Modificaciones |
---|---|
19 R4 | Nueva constante HTTP Client log file |
17 R5 | Añadidos |
File ( path : Text { ; pathType : Integer }{ ; * } ) : 4D.File
File ( fileConstant : Integer { ; * } ) : 4D.File
Parámetros | Tipo | Descripción | |
---|---|---|---|
path | Text | -> | Ruta del archivo |
fileConstant | Integer | -> | Constante del archivo 4D |
pathType | Integer | -> | fk posix path (por defecto) o fk platform path |
- | -> | * para devolver el archivo de la base local | |
Result | 4D.File | <- | Nuevo objeto de archivo |
Descripción
El comando File
crea y devuelve un nuevo objeto de tipo 4D.File
. El comando acepta dos sintaxis:
File ( path { ; pathType } { ; * })
En el parámetro path, pase una ruta de archivo. Puede utilizar una cadena personalizada o un filesystem (por ejemplo, "/DATA/myfile.txt").
Sólo se soportan los nombres de ruta absolutos con el comando
File
.
Por defecto, 4D espera una ruta expresada con la sintaxis POSIX. Si trabaja con los nombres de ruta de plataforma (Windows o macOS), debe declararlo utilizando el parámetro pathType. Las siguientes constantes están disponibles:
Constante | Valor | Comentario |
---|---|---|
fk platform path | 1 | Ruta expresada con una sintaxis específica de la plataforma (obligatoria en caso de nombre de ruta de plataforma) |
fk posix path | 0 | Ruta expresada con sintaxis POSIX (por defecto) |
File ( fileConstant { ; * } )
En el parámetro fileConstant, pase un archivo 4D interno o sistema, utilizando una de las siguientes constantes:
Constante | Valor | Comentario |
---|---|---|
Backup history file | 19 | Archivo de historial de copias de seguridad (ver Archivos de configuración y rastreo). Se almacena en la carpeta de destino de la copia de seguridad. |
Backup log file | 13 | Archivo historial de copias de seguridad actual. Almacenado en la carpeta Logs de la aplicación. |
Backup settings file | 1 | Archivo backup.4DSettings por defecto (formato xml), almacenado en la carpeta Settings del proyecto |
Backup settings file for data | 17 | archivo backup.4DSettings del archivo de datos (formato xml), almacenado en la carpeta Settings de la carpeta data |
Build application log file | 14 | Archivo de historial actual en formato xml del generador de aplicaciones. Almacenado en la carpeta Logs. |
Build application settings file | 20 | Archivo de configuración por defecto del generador de aplicaciones ("buildApp.4DSettings"). Almacenado en la carpeta Settings del proyecto. |
Compacting log file | 6 | Archivo de historial de la compactación más reciente realizada con el comando Compact data file o el Centro de seguridad y mantenimiento. Almacenado en la carpeta Logs. |
Current backup settings file | 18 | archivo backup.4DSettings utilizado actualmente por la aplicación. Puede ser el archivo de configuración de la copia de seguridad (por defecto) o un archivo de configuración de la copia de seguridad personalizado por el usuario definido para el archivo de datos |
Debug log file | 12 | Archivo de registro creado por el comando SET DATABASE PARAMETER(Debug log recording) . Almacenado en la carpeta Logs. |
Diagnostic log file | 11 | Archivo de registro creado por el comando SET DATABASE PARAMETER(Diagnostic log recording) . Almacenado en la carpeta Logs. |
Directory file | 16 | archivo directory.json, que contiene la descripción de los usuarios y grupos (si los hay) del proyecto. Puede situarse en la carpeta user settings (por defecto, se aplica a todo el proyecto), o en la carpeta data settings (específica para un archivo de datos). |
HTTP Client log file | 24 | Archivo de historial creado por el comando HTTP SET OPTION(HTTP client log) . Almacenado en la carpeta Logs. |
HTTP debug log file | 9 | Archivo de registro creado por el comando WEB SET OPTION(Web debug log) . Almacenado en la carpeta Logs. |
HTTP log file | 8 | Archivo de registro creado por el comando WEB SET OPTION(Web log recording) . Almacenado en la carpeta Logs. |
IMAP Log file | 23 | Archivo de registro creado por el comando SET DATABASE PARAMETER(IMAP Log) . Almacenado en la carpeta Logs. |
Last backup file | 2 | El último archivo de copia de seguridad, llamado \<applicationName>[bkpNum].4BK , se almacena en una ubicación personalizada. |
Last journal integration log file | 22 | Nombre completo del último archivo de registro de integración del historial (almacenado en la carpeta Logs de la aplicación restaurada), si la hay. Este archivo se crea, en modo de reparación automática, tan pronto como se produce una integración de archivos de historial |
Repair log file | 7 | Archivo de historial de las reparaciones realizadas en la base por el Centro de seguridad y mantenimiento (CSM). Almacenado en la carpeta Logs. |
Request log file | 10 | Archivo de registro de peticiones cliente/servidor estándar (excluyendo las peticiones web) creado por los comandos SET DATABASE PARAMETER(4D Server log recording) o SET DATABASE PARAMETER(Client log recording) . Si se ejecuta en el servidor, se devuelve el archivo de registro del servidor (almacenado en la carpeta Logs del servidor). Si se ejecuta en el cliente, se devuelve el archivo de registro del cliente (almacenado en la carpeta Logs local del cliente). |
SMTP log file | 15 | Archivo de registro creado por el comando SET DATABASE PARAMETER(SMTP Log) . Almacenado en la carpeta Logs. |
User settings file | 3 | archivo settings.4DSettings para todos los archivos de datos, almacenados en la carpeta Preferences junto a la estructura del archivo si está activado. |
User settings file for data | 4 | archivo settings.4DSettings para el archivo de datos actual, almacenado en la carpeta Preferences junto al archivo de datos. |
Verification log file | 5 | Archivos de historial creados por los comandos VERIFY CURRENT DATA FILE y VERIFY DATA FILE o el Centro de seguridad y mantenimiento (MSC). Almacenado en la carpeta Logs. |
Si el objetivo fileConstant no existe, se devuelve un objeto null. No se produce ningún error.
Si el comando se llama desde un componente, pase el parámetro opcional *
para obtener la ruta de la base local. De lo contrario, si omite el parámetro *
, siempre se devuelve un objeto null.
4D.File.new()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R6 | Añadidos |
4D.File.new ( path : Text { ; pathType : Integer } ) : 4D.File
4D.File.new ( fileConstant : Integer ) : 4D.File
Descripción
La función 4D.File.new()
crea y devuelve un nuevo objeto de tipo 4D.File
. Es idéntico al comando File
(acceso directo).
Se recomienda utilizar el comando de acceso directo
File
en lugar de4D.File.new()
.
.copyTo()
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.File
Parámetros | Tipo | Descripción | |
---|---|---|---|
destinationFolder | 4D.Folder | -> | Carpeta de destino |
newName | Text | -> | Nombre para la copia |
overwrite | Integer | -> | fk overwrite para sustituir los elementos existentes |
Result | 4D.File | <- | Archivo copiado |
Descripción
La función .copyTo()
copia el objeto File
en la destinationFolder especificada.
La destinationFolder debe existir en el disco, de lo contrario se genera un error.
Por defecto, el archivo se copia con el nombre del archivo original. Si desea cambiar el nombre de la copia, pase el nuevo nombre en el parámetro newName. El nuevo nombre debe cumplir con las reglas de nomenclatura (por ejemplo, no debe contener caracteres como ":", "/", etc.), de lo contrario se devuelve un error.
Si ya existe un archivo con el mismo nombre en la destinationFolder, por defecto 4D genera un error. Puede pasar la constante fk overwrite
en el parámetro overwrite para ignorar y sobrescribir el archivo existente
Constante | Valor | Comentario |
---|---|---|
fk overwrite | 4 | Sobrescribir los elementos existentes, si los hay |
Valor devuelto
El objeto File
copiado.
Ejemplo
Desea copiar un file imagen de la carpeta de documentos del usuario a la carpeta de la aplicación:
var $source; $copy : Object
$source:=Folder(fk documents folder).file("Pictures/photo.png")
$copy:=$source.copyTo(Folder("/PACKAGE");fk overwrite)
.create()
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
No disponible para archivos ZIP
.create() : Boolean
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Boolean | <- | True si el archivo se ha creado con éxito, false en caso contrario |
Descripción
La función .create()
crea un archivo en el disco según las propiedades del objeto File
.
Si es necesario, la función crea la jerarquía de carpetas como se describe en las propiedades platformPath o path. Si el archivo ya existe en el disco, la función no hace nada (no se lanza ningún error) y devuelve false.
Valor devuelto
- True si el archivo se crea con éxito;
- False si ya existe un archivo con el mismo nombre o si ha ocurrido un error.
Ejemplo
Creación de un archivo de preferencias en la carpeta principal:
var $created : Boolean
$created:=File("/PACKAGE/SpecialPrefs/"+Current user+".myPrefs").create()
.createAlias()
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.createAlias( destinationFolder : 4D.Folder ; aliasName : Text { ; aliasType : Integer } ) : 4D.File
Parámetros | Tipo | Descripción | |
---|---|---|---|
destinationFolder | 4D.Folder | -> | Carpeta de destino para el alias o el acceso directo |
aliasName | Text | -> | Nombre del alias o del atajo |
aliasType | Integer | -> | Tipo de enlace del alias |
Result | 4D.File | <- | Referencia del archivo del alias o de atajo |
Descripción
La función .createAlias()
crea un alias (macOS) o un acceso directo (Windows) al archivo con el nombre aliasName especificado en la carpeta designada por el objeto destinationFolder.
Pase el nombre del alias o del acceso directo a crear en el parámetro aliasName.
Por defecto en macOS, la función crea un alias estándar. También puede crear un enlace simbólico utilizando el parámetro aliasType. Las siguientes constantes están disponibles:
Constante | Valor | Comentario |
---|---|---|
fk alias link | 0 | Enlace de alias (por defecto) |
fk symbolic link | 1 | Enlace simbólico (sólo para macOS) |
En Windows, siempre se crea un acceso directo (archivo.lnk) (el parámetro aliasType es ignorado).
Objeto devuelto
Un objeto 4D.File
con la propiedad isAlias
definida en true.
Ejemplo
Quiere crear un alias para un archivo en su carpeta principal:
$myFile:=Folder(fk documents folder).file("Archives/ReadMe.txt")
$aliasFile:=$myFile.createAlias(File("/PACKAGE");"ReadMe")
.creationDate
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.creationDate : Date
Descripción
La propiedad .creationDate
devuelve la fecha de creación del archivo.
Esta propiedad es de solo lectura.
.creationTime
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.creationTime : Time
Descripción
La propiedad .creationTime
devuelve la hora de creación del archivo (expresada como un número de segundos que comienza en 00:00).
Esta propiedad es de solo lectura.
.delete()
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.delete()
Parámetros | Tipo | Descripción | |
---|---|---|---|
No requiere ningún parámetro |
Descripción
La función .delete()
borra el archivo.
Si el archivo no existe en el disco, la función no hace nada (no se genera ningún error).
Si el archivo está abierto, el resultado depende del sistema operativo:
- en Windows, se genera un error,
- en macOS, no se genera ningún error y el archivo se elimina.
.delete()
puede eliminar cualquier archivo de un disco. Esto incluye los documentos creados con otras aplicaciones, así como las propias aplicaciones. .delete()
debe utilizarse con extrema precaución. Eliminar un archivo es una operación permanente y no se puede deshacer.
Ejemplo
Desea eliminar un archivo específico en la carpeta de la base de datos:
$tempo:=File("/PACKAGE/SpecialPrefs/"+Current user+".prefs")
If($tempo.exists)
$tempo.delete()
ALERT("User preference file deleted.")
End if
.exists
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.exists : Boolean
Descripción
La propiedad .exists
devuelve true si el archivo existe en el disco, y false en caso contrario.
Esta propiedad es de solo lectura.
.extension
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.extension : Text
Descripción
La propiedad .extension
devuelve la extensión del nombre del archivo (si lo hay). Una extensión siempre comienza por ".". La propiedad .extension
devuelve la extensión del nombre del archivo (si lo hay).
Esta propiedad es de solo lectura.
.fullName
Historia
Lanzamiento | Modificaciones |
---|---|
17 R5 | Añadidos |
.fullName : Text
Descripción
La propiedad .fullName
devuelve el nombre completo del archivo, incluyendo su extensión (si la hay).
Esta propiedad es de solo lectura.
.getAppInfo()
Historia
Lanzamiento | Modificaciones |
---|---|
19 | Añadidos |
.getAppInfo() : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Object | <- | Contenido del archivo de recurso versión .exe/.dll o .plist |
Descripción
La función .getAppInfo()
devuelve el contenido de un archivo de información .exe, .dll o .plist como un objeto.
La función debe utilizarse con un archivo .exe, .dll o .plist existente. Si el archivo no existe en el disco o no es un archivo .exe, .dll o .plist válido, la función devuelve un objeto vacío (no se genera ningún error).
La función sólo admite archivos .plist en formato xml (basados en texto). Se devuelve un error si se utiliza con un archivo .plist en formato binario.
Objeto devuelto con un archivo .exe o .dll
La lectura de un .exe o .dll sólo es posible en Windows.
Todos los valores de propiedades son de tipo Texto.
Propiedad | Tipo |
---|---|
InternalName | Text |
ProductName | Text |
CompanyName | Text |
LegalCopyright | Text |
ProductVersion | Text |
FileDescription | Text |
FileVersion | Text |
OriginalFilename | Text |
Objeto devuelto con un archivo .plist
El contenido xml del archivo se analiza y las llaves se devuelven como propiedades del objeto, conservando sus tipos (texto, booleano, numérico). .plist dict
se devuelve como un objeto JSON y .plist array
se devuelve como un array JSON.
Ejemplo
// mostrar información de copyright del archivo .exe de la aplicación (windows)
var $exeFile : 4D.File
var $info : Object
$exeFile:=File(Application file; fk platform path)
$info:=$exeFile.getAppInfo()
ALERT($info.LegalCopyright)
// mostrar información de copyright de un info.plist (cualquier plataforma)
var $infoPlistFile : 4D.File
var $info : Object
$infoPlistFile:=File("/RESOURCES/info.plist")
$info:=$infoPlistFile.getAppInfo()
ALERT($info.Copyright)