Saltar al contenido principal
Versión: 20 R6 BETA

Folder

Los objetos Folder se crean con el comando Folder. Contienen referencias a carpetas que pueden o no existir realmente en el disco. Por ejemplo, cuando ejecuta el comando Folder para crear una nueva carpeta, se crea un objeto Folder válido, pero en realidad no se almacena nada en el disco hasta que llame a la función folder.create().

Ejemplo

El siguiente ejemplo crea una carpeta "JohnSmith":

Form.curfolder:=Folder(fk database folder)
Form.curfolder:=Folder("C:\\Users\\JohnSmith\\";fk platform path)

Rutas de acceso

Los objetos Folder admiten varios nombres de ruta, incluida la sintaxis filesystems o posix. Los nombres de ruta soportados se detallan en la página Rutas de acceso.

Objeto Folder

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.Folder
copia el objeto Folder en la destinationFolder especificada
.create() : Boolean
crea una carpeta en el disco según las propiedades del objeto Folder
.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 de la carpeta
.creationTime : Time
la hora de creación de la carpeta
.delete( { option : Integer } )
borra la carpeta
.exists : Boolean
true si la carpeta existe en disco
.extension : Text
devuelve la extensión del nombre de la carpeta (si la hay)
.file( path : Text ) : 4D.File
un objeto File dentro del objeto Folder y devuelve su referencia
.files( { options : Integer } ) : Collection
una colección de objetos File contenidos en la carpeta
.folder( path : Text ) : 4D.Folder
crea un objeto Folder dentro del objeto Folder padre y devuelve su referencia
.folders( { options : Integer } ) : Collection
devuelve una colección de objetos Folder contenidos en la carpeta padre
.fullName : Text
devuelve el nombre completo de la carpeta, incluyendo su extensión (si la hay)
.getIcon( { size : Integer } ) : Picture
devuelve el icono de la carpeta
.hidden : Boolean
true si la carpeta está configurada como "oculta" a nivel de sistema
.isAlias : Boolean
siempre false para un objeto Folder
.isFile : Boolean
siempre false para una carpeta
.isFolder : Boolean
siempre true para una carpeta
.isPackage : Boolean
true si la carpeta es un paquete en macOS (y existe en el disco)
.modificationDate : Date
la fecha de la última modificación de la carpeta
.modificationTime : Time
la hora de la última modificación de la carpeta
.name : Text
el nombre de la carpeta, sin extensión (si la hay)
.original : 4D.Folder
el mismo objeto de la carpeta
.parent : 4D.Folder
el objeto carpeta padre de la carpeta
.path : Text
la ruta POSIX de la carpeta
.platformPath : Text
la ruta del archivo expresada con la sintaxis de la plataforma actual
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.Folder
mueve o renombra el objeto Folder (carpeta de origen) a la carpeta de destino especificada
.rename( newName : Text ) : 4D.Folder
renombra la carpeta con el nombre introducido en newName y devuelve el objeto Folder renombrado

Folder

Historia
LanzamientoModificaciones
19 R8Soporte de fk home folder
17 R5Añadidos

Folder ( path : Text { ; pathType : Integer }{ ; * } ) : 4D.Folder
Folder ( folderConstant : Integer { ; * } ) : 4D.Folder

ParámetrosTipoDescripción
pathText->Ruta de la carpeta
folderConstantInteger->Constante de la carpeta 4D
pathTypeInteger->fk posix path (por defecto) o fk platform path
-->* para devolver la carpeta de la base local
Result4D.Folder<-Nuevo objeto de carpeta

Descripción

El comando Folder crea y devuelve un nuevo objeto del tipo 4D.Folder. El comando acepta dos sintaxis:

Folder ( path { ; pathType } { ; * } )

En el parámetro path, pase una ruta de carpeta. You can use a custom string or a filesystem (e.g., "/DATA").

Sólo se soportan los nombres de ruta absolutos con el comando Folder.

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:

ConstanteValorComentario
fk platform path1Ruta expresada con una sintaxis específica de la plataforma (obligatoria en caso de nombre de ruta de plataforma)
fk posix path0Ruta expresada con sintaxis POSIX (por defecto)

Folder ( folderConstant { ; * } )

En el parámetro folderConstant, pase una carpeta 4D interna o sistema, utilizando una de las siguientes constantes:

ConstanteValorComentario
fk applications folder116
fk data folder9Filesystem asociado: "/DATA"
fk database folder4Filesystem asociado: "/PACKAGE"
fk desktop folder115
fk documents folder117Carpeta Documentos del usuario
fk home folder118Carpeta personal actual del usuario (generalmente /Users/<username>/)
fk licenses folder1Carpeta que contiene los archivos de licencia 4D de la máquina
fk logs folder7Filesystem asociado: "/LOGS"
fk mobileApps folder10
fk remote database folder3Carpeta de la base de datos 4D creada en cada máquina 4D remota
fk resources folder6Filesystem asociado: "/RESOURCES"
fk system folder100
fk user preferences folder0Carpeta 4D que almacena los archivos de preferencias del usuario en la carpeta personal del usuario
fk web root folder8Carpeta raíz web actual de la base de datos: si está dentro del paquete "/PACKAGE/path", si no ruta completa

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.

En Windows, en los clientes fusionados, la ubicación de las carpetas integradas se modifica si se utiliza ShareLocalResourcesOnWindowsClient clave BuildApp.

4D.Folder.new()

Historia
LanzamientoModificaciones
18 R6Añadidos

4D.Folder.new ( path : Text { ; pathType : Integer }{ ; * } ) : 4D.Folder
4D.Folder.new ( folderConstant : Integer { ; * } ) : 4D.Folder

Descripción

La función 4D.Folder.new() crea y devuelve un nuevo objeto del tipo 4D.Folder. Es idéntico al comando Folder (acceso directo).

Se recomienda utilizar el comando de acceso directo Folder en lugar de 4D.Folder.new().

.copyTo()

Historia
LanzamientoModificaciones
17 R5Añadidos

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.Folder

ParámetrosTipoDescripción
destinationFolder4D.Folder->Carpeta de destino
newNameText->Nombre para la copia
overwriteInteger->fk overwrite para sustituir los elementos existentes
Result4D.Folder<-Carpeta o archivo copiado

Descripción

La función .copyTo() copia el objeto Folder en la destinationFolder especificada.

La destinationFolder debe existir en el disco, de lo contrario se genera un error.

Por defecto, la carpeta se copia con el nombre de la carpeta 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 una carpeta 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

ConstanteValorComentario
fk overwrite4Sobrescribir los elementos existentes, si los hay

Valor devuelto

El objeto Folder copiado.

Ejemplo

Desea copiar una carpeta Imágenes de la carpeta de documentos del usuario a la carpeta de la base:

var $userImages; $copiedImages : 4D.Folder
$userImages:=Folder(fk documents folder).folder("Pictures")
$copiedImages:=$userImages.copyTo(Folder(fk database folder);fk overwrite)

.create()

Historia
LanzamientoModificaciones
17 R5Añadidos

.create() : Boolean

ParámetrosTipoDescripción
ResultBoolean<-True si la carpeta se ha creado con éxito, false en caso contrario

Descripción

La función .create() crea una carpeta en el disco según las propiedades del objeto Folder.

Si es necesario, la función crea la jerarquía de carpetas como se describe en las propiedades platformPath o path. Si la carpeta ya existe en el disco, la función no hace nada (no se lanza ningún error) y devuelve false.

Valor devuelto

  • True si la carpeta se crea con éxito;
  • False si ya existe una carpeta con el mismo nombre o si se ha producido un error.

Ejemplo 1

Cree una carpeta vacía en la carpeta de la base:

var $created : Boolean
$created:=Folder("/PACKAGE/SpecialPrefs").create()

Ejemplo 2

Creación de la carpeta "/Archives2019/January/" en la carpeta de la base:

$newFolder:=Folder("/PACKAGE/Archives2019/January")
If($newFolder.create())
ALERT("La carpeta "+$newFolder.name+" fue creada.")
Else
ALERT("Imposible crear la carpeta "+$newFolder.name+".")
End if

.createAlias()

Historia
LanzamientoModificaciones
17 R5Añadidos

.createAlias( destinationFolder : 4D.Folder ; aliasName : Text { ; aliasType : Integer } ) : 4D.File

ParámetrosTipoDescripción
destinationFolder4D.Folder->Carpeta de destino para el alias o el acceso directo
aliasNameText->Nombre del alias o del atajo
aliasTypeInteger->Tipo de enlace del alias
Result4D.File<-Referencia de alias o de acceso directo

Descripción

La función .createAlias() crea un alias (macOS) o un acceso directo (Windows) a la carpeta 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:

ConstanteValorComentario
fk alias link0Enlace de alias (por defecto)
fk symbolic link1Enlace 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 una carpeta de archivos en su carpeta principal:

$myFolder:=Folder("C:\\Documents\\Archives\\2019\\January";fk platform path)
$aliasFile:=$myFolder.createAlias(Folder("/PACKAGE");"Jan2019")

.creationDate

Historia
LanzamientoModificaciones
17 R5Añadidos

.creationDate : Date

Descripción

La propiedad .creationDate devuelve la fecha de creación de la carpeta.

Esta propiedad es de solo lectura.

.creationTime

Historia
LanzamientoModificaciones
17 R5Añadidos

.creationTime : Time

Descripción

La propiedad .creationTime devuelve la hora de creación de la carpeta (expresada como un número de segundos que comienza en 00:00).

Esta propiedad es de solo lectura.

.delete()

Historia
LanzamientoModificaciones
17 R5Añadidos

.delete( { option : Integer } )

ParámetrosTipoDescripción
optionInteger->Opción de eliminación de carpeta

Descripción

La función .delete() borra la carpeta.

Por defecto, por razones de seguridad, si omite el parámetro de opción, .delete( ) sólo permite borrar carpetas vacías. Si desea que el comando pueda eliminar carpetas que no están vacías, debe utilizar el parámetro option con una de las siguientes constantes:

ConstanteValorComentario
Delete only if empty0Elimina la carpeta sólo cuando está vacía
Delete with contents1Elimina la carpeta junto con todo lo que contiene

Cuando se pasa Delete only if empty o si se omite el parámetro de opción:

  • La carpeta sólo se elimina si está vacía; en caso contrario, el comando no hace nada y se genera un error -47.
  • Si la carpeta no existe, se genera el error -120.

Cuando se pasa Delete with contents:

  • La carpeta, junto con todo su contenido, se elimina. Advertencia: incluso esta carpeta y/o su contenido estén bloqueados o definidos como de sólo lectura, si el usuario actual tiene los derechos de acceso adecuados, la carpeta (y su contenido) aún se elimina.
  • Si esta carpeta, o cualquiera de los archivos que contiene, no puede ser eliminada, la eliminación se interrumpe tan pronto como se detecta el primer elemento inaccesible y se devuelve un error(*). En este caso, la carpeta puede ser eliminada sólo parcialmente. Cuando se interrumpe la eliminación, puede utilizar el comando GET LAST ERROR STACK para recuperar el nombre y la ruta del archivo infractor.
  • Si la carpeta no existe, el comando no hace nada y no devuelve ningún error. (*) Windows: -54 (Attempt to open locked file for writing) macOS: -45 (The file is locked or the pathname is not correct)

.exists

Historia
LanzamientoModificaciones
17 R5Añadidos

.exists : Boolean

Descripción

La propiedad .exists devuelve true si la carpeta existe en disco, y falso de lo contrario.

Esta propiedad es de solo lectura.

.extension

Historia
LanzamientoModificaciones
17 R5Añadidos

.extension : Text

Descripción

La propiedad .extension devuelve la extensión del nombre de la carpeta (si la hay). Una extensión siempre comienza por ".". La propiedad devuelve una cadena vacía si el nombre de la carpeta no tiene extensión.

Esta propiedad es de solo lectura.

.file()

Historia
LanzamientoModificaciones
17 R5Añadidos

.file( path : Text ) : 4D.File

ParámetrosTipoDescripción
pathText->Ruta POSIX relativa
Result4D.File<-Objeto File (null si la ruta es inválida)

Descripción

La función .file() crea un objeto File dentro del objeto Folder y devuelve su referencia.

En ruta, pase una ruta POSIX relativa para designar el archivo a regresar. La ruta se evaluará a partir de la carpeta padre como raíz.

Valor devuelto

Un objeto File o null si path no es válido.

Ejemplo

var $myPDF : 4D.File
$myPDF:=Folder(fk documents folder).file("Pictures/info.pdf")

.files()

Historia
LanzamientoModificaciones
17 R5Añadidos

.files( { options : Integer } ) : Collection

ParámetrosTipoDescripción
optionsInteger->Opciones de la lista de archivos
ResultCollection<-Colección de objetos de archivo hijo

Descripción

La función .files() devuelve una colección de objetos File contenidos en la carpeta.

Los alias o enlaces simbólicos no se resuelven.

Por defecto, si se omite el parámetro options, sólo se devuelven en la colección los archivos del primer nivel de la carpeta, así como los archivos o carpetas invisibles. Puede modificar esto pasando, en el parámetro options, una o varias de las siguientes constantes:

ConstanteValorComentario
fk recursive1La colección contiene los archivos de la carpeta especificada y sus subcarpetas
fk ignore invisible8Los archivos invisibles no aparecen en la lista

Valor devuelto

Colección de objetosFile.

Ejemplo 1

Quiere saber si hay archivos invisibles en la carpeta de la base:

 var $all; $noInvisible : Collection
$all:=Folder(fk database folder).files()
$noInvisible:=Folder(fk database folder).files(fk ignore invisible)
If($all.length#$noInvisible.length)
ALERT("Database folder contains hidden files.")
End if

Ejemplo 2

Quiere obtener todos los archivos que no son invisibles en la carpeta Documents:

 var $recursive : Collection
$recursive:=Folder(fk documents folder).files(fk recursive+fk ignore invisible)

.folder()

Historia
LanzamientoModificaciones
17 R5Añadidos

.folder( path : Text ) : 4D.Folder

ParámetrosTipoDescripción
pathText->Ruta POSIX relativa
Result4D.Folder<-Objeto carpeta creado (null si path es inválido)

Descripción

La función .folder() crea un objeto Folder dentro del objeto Folder padre y devuelve su referencia.

En path, pase una ruta relativa POSIX para designar la carpeta a devolver. La ruta se evaluará a partir de la carpeta padre como raíz.

Valor devuelto

Un objeto Folder o null si path es inválido.

Ejemplo

 var $mypicts : 4D.Folder
$mypicts:=Folder(fk documents folder).folder("Pictures")

.folders()

Historia
LanzamientoModificaciones
17 R5Añadidos

.folders( { options : Integer } ) : Collection

ParámetrosTipoDescripción
optionsInteger->Opciones de la lista de carpetas
ResultCollection<-Colección de objetos de carpeta hijo

Descripción

La función .folders() devuelve una colección de objetos Folder contenidos en la carpeta padre.

Por defecto, si se omite el parámetro options, sólo se devuelven en la colección las carpetas del primer nivel de la carpeta. Puede modificar esto pasando, en el parámetro options, una o varias de las siguientes constantes:

ConstanteValorComentario
fk recursive1La colección contiene las carpetas de la carpeta especificada y sus subcarpetas
fk ignore invisible8Los archivos invisibles no aparecen en la lista

Valor devuelto

Colección de objetos Folder.

Ejemplo

Quiere obtener la colección de todas las carpetas y subcarpetas de la carpeta de la base:

 var $allFolders : Collection
$allFolders:=Folder("/PACKAGE").folders(fk recursive)

.fullName

Historia
LanzamientoModificaciones
17 R5Añadidos

.fullName : Text

Descripción

La propiedad .fullName devuelve el nombre completo de la carpeta, incluyendo su extensión (si la hay).

Esta propiedad es de solo lectura.

.getIcon()

Historia
LanzamientoModificaciones
17 R5Añadidos

.getIcon( { size : Integer } ) : Picture

ParámetrosTipoDescripción
sizeInteger->Longitud del lado de la imagen devuelta (píxeles)
ResultPicture<-Icono

Descripción

La función .getIcon() devuelve el icono de la carpeta.

El parámetro opcional size especifica las dimensiones en píxeles del icono devuelto. Este valor representa en realidad la longitud del lado del cuadrado que contiene el icono. Los iconos suelen definirse en 32x32 píxeles ("iconos grandes") o 16x16 píxeles ("iconos pequeños"). Si pasa 0 u omite este parámetro, se devuelve la versión "icono grande".

Si la carpeta no existe en el disco, se devuelve un icono vacío por defecto.

Valor devuelto

Imagen del icono de la carpeta.

.hidden

Historia
LanzamientoModificaciones
17 R5Añadidos

.hidden : Boolean

Descripción

La propiedad .hidden devuelve true si la carpeta está configurada como "oculta" a nivel de sistema, y false en caso contrario.

Esta propiedad es de solo lectura.

.isAlias

Historia
LanzamientoModificaciones
17 R5Añadidos

.isAlias : Boolean

Descripción

La propiedad .isAlias devuelve siempre false para un objeto Folder.

Esta propiedad es de solo lectura.

.isFile

Historia
LanzamientoModificaciones
17 R5Añadidos

.isFile : Boolean

Descripción

La propiedad .isFile devuelve siempre false para una carpeta.

Esta propiedad es de solo lectura.

.isFolder

Historia
LanzamientoModificaciones
17 R5Añadidos

.isFolder : Boolean

Descripción

La propiedad .isFolder devuelve siempre true para una carpeta.

Esta propiedad es de solo lectura.

.isPackage

Historia
LanzamientoModificaciones
17 R5Añadidos

.isPackage : Boolean

Descripción

La propiedad .isPackage devuelve true si la carpeta es un paquete en macOS (y existe en el disco). En caso contrario, devuelve false.

En Windows, .isPackage siempre devuelve false.

Esta propiedad es de solo lectura.

.modificationDate

Historia
LanzamientoModificaciones
17 R5Añadidos

.modificationDate : Date

Descripción

La propiedad .modificationDate devuelve la fecha de la última modificación de la carpeta.

Esta propiedad es de solo lectura.

.modificationTime

Historia
LanzamientoModificaciones
17 R5Añadidos

.modificationTime : Time

Descripción

La propiedad .modificationDate devuelve la hora de la última modificación de la carpeta (expresada como un número de segundos que comienza en 00:00).

Esta propiedad es de solo lectura.

.moveTo()

Historia
LanzamientoModificaciones
17 R5Añadidos

.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.Folder

ParámetrosTipoDescripción
destinationFolder4D.Folder->Carpeta de destino
newNameText->Nombre completo de la carpeta trasladada
Result4D.Folder<-Carpeta movida

Descripción

La función .moveTo( ) mueve o renombra el objeto Folder (carpeta de origen) a la carpeta de destino especificada.

La destinationFolder debe existir en el disco, de lo contrario se genera un error.

Por defecto, la carpeta conserva su nombre cuando se mueve. Si desea cambiar renombrar la carpeta desplazada, pase el nombre completo 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.

Objeto devuelto

El objeto Folder movido.

Ejemplo

Quiere mover y renombrar una carpeta:

 var $tomove; $moved : Object
$docs:=Folder(fk documents folder)
$tomove:=$docs.folder("Pictures")
$tomove2:=$tomove.moveTo($docs.folder("Archives");"Pic_Archives")

.name

Historia
LanzamientoModificaciones
17 R5Añadidos

.name : Text

Descripción

La propiedad .name devuelve el nombre de la carpeta, sin extensión (si la hay).

Esta propiedad es de solo lectura.

.original

Historia
LanzamientoModificaciones
17 R5Añadidos

.original : 4D.Folder

Descripción

La propiedad .original devuelve el mismo objeto de la carpeta .

Esta propiedad es de solo lectura.

Esta propiedad está disponible en las carpetas para permitir que el código genérico procese carpetas o archivos.

.parent

Historia
LanzamientoModificaciones
17 R5Añadidos

.parent : 4D.Folder

Descripción

La propiedad .parent devuelve el objeto carpeta padre de la carpeta. Si la ruta representa una ruta del sitema (por ejemplo, "/DATA/"), se devuelve la ruta del sistema.

Si la carpeta no tiene un padre (raíz), se devuelve el valor null.

Esta propiedad es de solo lectura.

.path

Historia
LanzamientoModificaciones
17 R5Añadidos

.path : Text

Descripción

La propiedad .path devuelve la ruta POSIX de la carpeta. Si la ruta representa un filesystem (por ejemplo, "/DATA/"), se devuelve el filesystem.

Esta propiedad es de solo lectura.

.platformPath

Historia
LanzamientoModificaciones
17 R5Añadidos

.platformPath : Text

Descripción

La propiedad .platformPath devuelve la ruta del archivo expresada con la sintaxis de la plataforma actual.

Esta propiedad es de solo lectura.

.rename()

Historia
LanzamientoModificaciones
17 R5Añadidos

.rename( newName : Text ) : 4D.Folder

ParámetrosTipoDescripción
newNameText->Nuevo nombre completo para la carpeta
Result4D.Folder<-Carpeta renombrada

Descripción

La función .rename() renombra la carpeta con el nombre introducido en newName y devuelve el objeto Folder renombrado.

El parámetro newName 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, se devuelve un error.

Objeto devuelto

El objeto Folder renombrado.

Ejemplo

 var $toRename : 4D.Folder
$toRename:=Folder("/RESOURCES/Pictures").rename("Images")