Saltar al contenido principal
Versión: 19

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 se 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 se llama 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 soportan varios nombres de ruta, incluyendo las sintaxis filesystems o posix. Los nombres de ruta soportados se detallan en la página Pathnames.

Objeto Folder

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.Folder    copia el objeto Folder en el objeto destinationFolder especificado
.create() : Boolean    The .create() function
.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 } )    The .delete() function
.exists : Boolean    true si la carpeta existe en el 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 padre Folder 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, incluida su extensión (si la hay)
.getIcon( { size : Integer } ) : Picture    devuelve el icono de la carpeta
.hidden : Boolean     true si la carpeta está definida como "oculta" a nivel del 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 Folder que la carpeta
.parent : 4D.Folder    el objeto carpeta padre de la carpeta
.path : Text    la ruta POSIX de la carpeta
.platformPath : Text    la ruta de la carpeta expresada con la sintaxis de la plataforma actual
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.Folder    mueve o renombra el objeto Folder (carpeta fuente) en la destinationFolder especificada
.rename( newName : Text ) : 4D.Folder    renombra la carpeta con el nombre que se le ha pasado en newName y devuelve el objeto Folder renombrado

Folder

Histórico
LanzamientoModificaciones
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. Puede utilizar una cadena personalizada o un filesystem (por ejemplo, "/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 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 folder04D que almacena los archivos de preferencias del usuario dentro del directorio \<userName>.
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. En caso contrario, si se 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 la BuildApp key ShareLocalResourcesOnWindowsClient.

4D.Folder.new()

Histórico
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 directoFolder< en lugar de 4D.Folder.new().

.copyTo()

Histórico
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 el objeto destinationFolder especificado.

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()

Histórico
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() The .create() function.

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 ha ocurrido 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("The "+$newFolder.name+" folder was created.")
Else
ALERT("Impossible to create a "+$newFolder.name+" folder.")
End if
Else
ALERT("Impossible to create a "+$newFolder.name+" folder.")
End if

.createAlias()

Histórico
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

Histórico
LanzamientoModificaciones
17 R5Añadidos

.creationDate : Date

Descripción

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

Esta propiedad es de sólo lectura.

.creationTime

Histórico
LanzamientoModificaciones
17 R5Añadidos

.creationTime : Time

Descripción

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

Esta propiedad es de sólo lectura.

.delete()

Histórico
LanzamientoModificaciones
17 R5Añadidos

.delete( { option : Integer } )

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

|

Descripción

La función .delete() The .delete() function.

Por defecto, por razones de seguridad, si se omite el parámetro option, .delete( ) sólo permite borrar las 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 Delete only if empty se pasa o si se omite el parámetro option:

  • 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 el borrado, puede utilizar el comando GET LAST ERROR STACK para recuperar el nombre y la ruta de acceso 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

Histórico
LanzamientoModificaciones
17 R5Añadidos

.exists : Boolean

Descripción

La propiedad .exists devuelve true si la carpeta existe en el disco, y false en caso contrario.

Esta propiedad es de sólo lectura.

.extension

Histórico
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 sólo lectura.

.file()

Histórico
LanzamientoModificaciones
17 R5Añadidos

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

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

|

Descripción

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

En path, pase una ruta relativa POSIX para designar el archivo a devolver. 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()

Histórico
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 objetos File.

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
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()

Histórico
LanzamientoModificaciones
17 R5Añadidos

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

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

|

Descripción

La función .folder() crea un objeto Folder dentro del objeto padre Folder 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 no es válido.

Ejemplo

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

.folders()

Histórico
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

Histórico
LanzamientoModificaciones
17 R5Añadidos

.fullName : Text

Descripción

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

Esta propiedad es de sólo lectura.

.getIcon()

Histórico
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

Histórico
LanzamientoModificaciones
17 R5Añadidos

.hidden : Boolean

Descripción

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

Esta propiedad es de sólo lectura.

.isAlias

Histórico
LanzamientoModificaciones
17 R5Añadidos

.isAlias : Boolean

Descripción

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

Esta propiedad es de sólo lectura.

.isFile

Histórico
LanzamientoModificaciones
17 R5Añadidos

.isFile : Boolean

Descripción

La propiedad .isFile devuelve siempre false para una carpeta.

Esta propiedad es de sólo lectura.

.isFolder

Histórico
LanzamientoModificaciones
17 R5Añadidos

.isFolder : Boolean

Descripción

La propiedad .isFolder devuelve siempre true para una carpeta.

Esta propiedad es de sólo lectura.

.isPackage

Histórico
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 sólo lectura.

.modificationDate

Histórico
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 sólo lectura.

.modificationTime

Histórico
LanzamientoModificaciones
17 R5Añadidos

.modificationTime : Time

Descripción

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

Esta propiedad es de sólo lectura.

.moveTo()

Histórico
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 fuente) en la destinationFolder 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

Histórico
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 sólo lectura.

.original

Histórico
LanzamientoModificaciones
17 R5Añadidos

.original : 4D.Folder

Descripción

La propiedad .original devuelve el mismo objeto Folder que la carpeta.

Esta propiedad es de sólo lectura.

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

.parent

Histórico
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 sólo lectura.

.path

Histórico
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 sólo lectura.

.platformPath

Histórico
LanzamientoModificaciones
17 R5Añadidos

.platformPath : Text

Descripción

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

Esta propiedad es de sólo lectura.

.rename()

Histórico
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 que se le ha pasado 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")