Aller au contenu principal
Version: v20 R4 BETA

Folder

Les objets Folder sont créés avec la commande Folder. Ils contiennent des références à des dossiers qui peuvent exister réellement ou non sur le disque. Par exemple, lorsque vous exécutez la commande Folder pour créer un nouveau dossier, un objet Folder valide est créé mais rien n'est réellement stocké sur le disque jusqu'à ce que vous appeliez la fonction folder.create().

Exemple

L'exemple suivant crée un dossier "JohnSmith" :

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

Chemins d'accès

Les objets Folder prennent en charge plusieurs formes de chemin d'accès, y compris les syntaxes filesystems ou posix. Les noms de chemin pris en charge sont détaillés dans la page Pathnames .

Objet Folder

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.Folder    copie l'objet Folder dans l'objet destinationFolder spécifié
.create() : Boolean    crée un dossier sur le disque selon les propriétés de l'objet Folder
.createAlias( destinationFolder : 4D.Folder ; aliasName : Text { ; aliasType : Integer } ) : 4D.File    crée un alias (macOS) ou un raccourci (Windows)
.creationDate : Date    la date de création du dossier
.creationTime : Time    l'heure de création du dossier
.delete( { option : Integer } )    supprime le dossier
.exists : Boolean    vrai si le dossier existe sur le disque
.extension : Text    retourne l'extension du nom du dossier (le cas échéant)
.file( path : Text ) : 4D.File    un objet File à l'intérieur de l'objet Folder et renvoie sa référence
.files( { options : Integer } ) : Collection    une collection des objets File contenus dans le dossier
.folder( path : Text ) : 4D.Folder    crée un objet Folder à l'intérieur de l'objet parent Folder et retourne sa référence
.folders( { options : Integer } ) : Collection    retourne une collection d'objets Folder contenus dans le dossier parent
.fullName : Text    retourne le nom complet du dossier, y compris son extension (le cas échéant)
.getIcon( { size : Integer } ) : Picture    retourne l'icône du dossier
.hidden : Boolean     vrai si le dossier est défini comme "caché" au niveau du système
.isAlias : Boolean    toujours faux pour un objet Folder
.isFile : Boolean    toujours faux pour un objet Folder
.isFolder : Boolean    toujours vrai pour un objet Folder
.isPackage : Boolean    vrai si le dossier est un paquet sur macOS (et existe sur le disque)
.modificationDate : Date     la date de la dernière modification du dossier
.modificationTime : Time    l'heure de la dernière modification du dossier
.name : Text     le nom du dossier, sans extension (le cas échéant)
.original : 4D.Folder    le même objet Folder que le dossier
.parent : 4D.Folder    l'objet Folder parent du dossier
.path : Text    le chemin POSIX du dossier
.platformPath : Text    le chemin du dossier exprimé avec la syntaxe de la plate-forme actuelle
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.Folder    déplace ou renomme l'objet Folder (dossier source) dans l'objet destinationFolderspécifié
.rename( newName : Text ) : 4D.Folder    renomme le dossier avec le nom que vous avez passé dans newName et renvoie l'objet Folder renommé

Folder

Historique
VersionModifications
v19 R8Prise en charge de fk home folder
v17 R5Ajout

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

ParamètresTypeDescription
pathText->Chemin du dossier
folderConstantInteger->Constante de dossier 4D
pathTypeInteger->fk posix path (par défaut) ou fk platform path
*->* pour retourner le dossier de la base hôte
Résultat4D.Folder<-Nouvel objet dossier

|

Description

La commande Folder crée et renvoie un nouvel objet du type 4D.Folder. La commande accepte deux syntaxes :

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

Dans le paramètre path, passez un chemin de dossier. Vous pouvez utiliser une chaine personnalisée ou un "filesystem" (ex : "/DATA").

Seuls les noms de chemin absolus sont pris en charge par la commande Folder.

Par défaut, 4D attend un chemin exprimé avec la syntaxe POSIX. Si vous travaillez avec des chemins de plate-forme (Windows ou macOS), vous devez les déclarer à l'aide du paramètre pathType. Les constantes suivantes sont disponibles :

ConstanteValeurCommentaire
fk platform path1Chemin exprimé dans une syntaxe spécifique à la plate-forme (obligatoire en cas de chemin de plate-forme)
fk posix path0Chemin exprimé avec la syntaxe POSIX (par défaut)

Folder ( folderConstant { ; * } )

Dans le paramètre folderConstant, passez un dossier 4D interne ou un dossier système, à l'aide d'une des constantes suivantes :

ConstanteValeurCommentaire
fk applications folder116
fk data folder9Filesystem associé : "/DATA"
fk database folder4Filesystem associé : "/PACKAGE"
fk desktop folder115
fk documents folder117Dossier Documents de l'utilisateur
fk home folder118Dossier personnel actuel de l'utilisateur (généralement /Users/<username>/)
fk licenses folder1Dossier contenant les fichiers de licence 4D de la machine
fk logs folder7Filesystem associé : "/LOGS"
fk mobileApps folder10
fk remote database folder3Dossier de la base de données 4D créé sur chaque machine 4D distante
fk resources folder6Filesystem associé : "/RESOURCES"
fk system folder100
fk user preferences folder0Dossier 4D qui stocke les fichiers de préférences de l'utilisateur dans le dossier personnel de l'utilisateur
fk web root folder8Dossier racine web courant du projet : "/PACKAGE/chemin" si son emplacement se trouve dans le package, sinon chemin complet

Si la commande est appelée à partir d'un composant, passez le paramètre optionnel pour lire le chemin de la base hôte. Sinon, si vous omettez le paramètre , un objet null est systématiquement retourné.

Sous Windows, dans les clients fusionnés, l'emplacement des dossiers intégrés est modifié si la clé BuildApp ShareLocalResourcesOnWindowsClient est utilisée.

4D.Folder.new()

Historique
VersionModifications
v18 R6Ajout

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

Description

La fonction .4D.Folder.new() crée et renvoie un nouvel objet du type 4D.Folder. Elle est identique à la commande Folder (raccourci).

Il est recommandé d'utiliser la commande raccourci Folder au lieu de 4D.Folder.new().

.copyTo()

Historique
VersionModifications
v17 R5Ajout

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

ParamètresTypeDescription
dossierDestination4D.Folder->Dossier de destination
nouveauNomText->Nom de la copie
overwriteInteger->fk overwrite pour écraser les éléments existants
Résultat4D.Folder<-Dossier copié

|

Description

La fonction .copyTo() copie l'objet Folder dans l'objet destinationFolder spécifié.

Le destinationFolder doit exister sur disque, sinon une erreur est générée.

Par défaut, le dossier est copié avec le nom du dossier original. Si vous souhaitez renommer la copie, passez le nouveau nom dans le paramètre newName. Le nouveau nom doit être conforme aux règles de nommage (ex : il ne doit pas contenir de caractères tels que ":", "/", etc.), sinon une erreur est retournée.

S'il existe déjà un dossier portant le même nom dans destinationFolder, par défaut 4D génère une erreur. Vous pouvez passer la constante fk overwrite dans le paramètre overwrite pour ignorer et écraser le dossier existant :

ConstanteValeurCommentaire
fk overwrite4Écrase les éléments existants, le cas échéant

Valeur retournée

L'objet Folder copié.

Exemple

Vous souhaitez copier un dossier Pictures, à partir du dossier Document de l'utilisateur vers le dossier 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()

Historique
VersionModifications
v17 R5Ajout

.create() : Boolean

ParamètresTypeDescription
RésultatBoolean<-Vrai si le dossier a été créé avec succès, sinon Faux

|

Description

La fonction .create() crée un dossier sur le disque selon les propriétés de l'objet Folder.

Le cas échéant, la fonction crée la hiérarchie du dossier en se basant sur la description des propriétés platformPath ou path. Si le dossier existe déjà sur disque, la fonction ne fait rien (aucune erreur n'est générée) et retourne faux.

Valeur retournée

  • Vrai si le dossier est créé avec succès ;
  • Faux si un dossier du même nom existe déjà ou si une erreur s'est produite.

Exemple 1

Créer un dossier vide dans le dossier principal :

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

Exemple 2

Création d'un dossier "/Archives2019/January/" dans le dossier principal :

$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

.createAlias()

Historique
VersionModifications
v17 R5Ajout

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

ParamètresTypeDescription
dossierDestination4D.Folder->Dossier de destination pour l'alias ou le raccourci
aliasNameText->Nom de l'alias ou du raccourci
aliasTypeInteger->Type de lien de l'alias
Résultat4D.File<-Référence de l'alias ou du raccourci du dossier

|

Description

La fonction .createAlias() crée un alias (macOS) ou un raccourci (Windows) nommé aliasName pour le dossier, dans le dossier désigné par l'objet destinationFolder .

Passez le nom de l'alias ou du raccourci à créer dans le paramètre aliasName.

Par défaut sur macOS, la fonction crée un alias standard. Vous pouvez également créer un lien symbolique à l'aide du paramètre aliasType. Les constantes suivantes sont disponibles :

ConstanteValeurCommentaire
fk alias link0Lien alias (macOS uniquement)(par défaut)
fk symbolic link1Lien symbolique (macOS uniquement)

Sur Windows, un raccourci (fichier .lnk) est toujours créé (le paramètre aliasType est ignoré).

Objet retourné

Un objet 4D.File avec la propriété isAlias mise à true.

Exemple

Vous souhaitez créer un alias pour un dossier d'archives dans votre dossier principal :

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

.creationDate

Historique
VersionModifications
v17 R5Ajout

.creationDate : Date

Description

La propriété .creationDate retourne la date de création du dossier.

Cette propriété est en lecture seule.

.creationTime

Historique
VersionModifications
v17 R5Ajout

.creationTime : Time

Description

La propriété .creationTime retourne l'heure de création du dossier (exprimé en nombre de secondes commençant à 00:00).

Cette propriété est en lecture seule.

.delete()

Historique
VersionModifications
v17 R5Ajout

.delete( { option : Integer } )

ParamètresTypeDescription
optionInteger->Option de suppression du dossier

|

Description

La fonction delete() supprime le dossier.

Par défaut, pour des raisons de sécurité, si vous omettez le paramètre option, .delete() permet uniquement de supprimer les dossiers vides. Si vous souhaitez que la commande supprime des dossiers qui ne sont pas vides, vous devez utiliser le paramètre option avec l'une des constantes suivantes :

ConstanteValeurCommentaire
Delete only if empty0Supprime le dossier uniquement s'il est vide
Delete with contents1Supprime le dossier ainsi que son éventuel contenu

Lorsque la constante Delete only if empty est passée ou si vous omettez le paramètre option :

  • Le dossier n'est supprimé que s'il est vide ; sinon, la commande ne fait rien et une erreur -47 est générée.
  • Si le dossier n'existe pas, l'erreur -120 est générée.

Lorsque la constante Delete with contents est passée :

  • Le dossier, ainsi que tout son contenu, est supprimé. Attention : Même si ce dossier et/ou son contenu sont verrouillés ou définis comme étant en lecture seule, si l'utilisateur dispose des droits d'accès appropriés, le dossier (et son contenu) est supprimé malgré tout.
  • Si ce dossier, ou l'un des fichiers qu'il contient, ne peut être supprimé, la suppression est interrompue dès que le premier élément inaccessible est détecté, et une erreur(*) est retournée. Dans ce cas, le dossier ne peut être que partiellement supprimé. Lorsque la suppression est interrompue, vous pouvez utiliser la commande GET LAST ERROR STACK pour récupérer le nom et le chemin d'accès du dossier incriminé.
  • Si le dossier n'existe pas, la commande ne fait rien et aucune erreur n'est retournée. (*) Windows: -54 (Attempt to open locked file for writing) macOS: -45 (The file is locked or the pathname is not correct)

.exists

Historique
VersionModifications
v17 R5Ajout

.exists : Boolean

Description

La propriété .exists retourne vrai si le dossier existe sur le disque, et faux sinon.

Cette propriété est en lecture seule.

.extension

Historique
VersionModifications
v17 R5Ajout

.extension : Text

Description

La propriété .extension retourne l'extension du nom du dossier (le cas échéant). Une extension commence toujours par ".". La propriété retourne une chaîne vide si le nom du dossier n'a pas d'extension.

Cette propriété est en lecture seule.

.file()

Historique
VersionModifications
v17 R5Ajout

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

ParamètresTypeDescription
pathText->Chemin POSIX relatif
Résultat4D.File<-Objet File (null si chemin invalide)

|

Description

La fonction .file() crée un objet File à l'intérieur de l'objet Folder et renvoie sa référence.

Dans le paramètre path, passez un chemin relatif POSIX pour désigner le fichier à retourner. Le chemin sera évalué à partir du dossier parent en tant que racine.

Valeur retournée

Un objet File ou null si path n'est pas valide.

Exemple

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

.files()

Historique
VersionModifications
v17 R5Ajout

.files( { options : Integer } ) : Collection

ParamètresTypeDescription
optionsInteger->Options de liste de fichiers
RésultatCollection<-Collection d'objets dossier enfant

|

Description

La fonction .files() retourne une collection des objets File contenus dans le dossier.

Les alias ou les liens symboliques ne sont pas résolus.

Par défaut, si vous omettez le paramètre options, seuls les fichiers à la racine du dossier sont retournés dans la collection, ainsi que les fichiers et dossiers invisibles. Vous pouvez modifier cela en passant, dans le paramètre options parameter, une ou plusieurs des constantes suivantes :

ConstanteValeurCommentaire
fk recursive1La collection contient les fichiers du dossier spécifié ainsi que de ses sous-dossiers
fk ignore invisible8Les fichiers invisibles ne sont pas répertoriés

Valeur retournée

Collection d'objets File.

Exemple 1

Vous souhaitez savoir s'il y a des fichiers invisibles dans le dossier 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

Exemple 2

Vous souhaitez lire tous les fichiers qui ne sont pas invisibles dans le dossier Documents :

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

.folder()

Historique
VersionModifications
v17 R5Ajout

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

ParamètresTypeDescription
pathText->Chemin POSIX relatif
Résultat4D.Folder<-Objet dossier (null si path invalide)

|

Description

La fonction .folder() crée un objet Folder à l'intérieur de l'objet parent Folder et retourne sa référence.

Dans le paramètre path, passez un chemin relatif POSIX pour désigner le dossier à retourner. Le chemin sera évalué à partir du dossier parent en tant que racine.

Valeur retournée

Un objet Folder object ou null si path est invalide.

Exemple

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

.folders()

Historique
VersionModifications
v17 R5Ajout

.folders( { options : Integer } ) : Collection

ParamètresTypeDescription
optionsInteger->Options de liste des dossiers
RésultatCollection<-Collection d'objets dossier enfant

|

Description

La fonction .folders() retourne une collection d'objets Folder contenus dans le dossier parent.

Par défaut, si vous omettez le paramète options, seuls les dossiers à la racine du dossier sont retournés dans la collection. Vous pouvez modifier cela en passant, dans le paramètre options parameter, une ou plusieurs des constantes suivantes :

ConstanteValeurCommentaire
fk recursive1La collection contient les dossiers du dossier spécifié ainsi que de ses sous-dossiers
fk ignore invisible8Les dossiers invisibles ne sont pas répertoriés

Valeur retournée

Collection d'objets Folder.

Exemple

Vous souhaitez obtenir la collection de tous les dossiers et sous-dossiers du dossier de la base :

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

.fullName

Historique
VersionModifications
v17 R5Ajout

.fullName : Text

Description

La propriété .fullName retourne le nom complet du dossier, y compris son extension (le cas échéant).

Cette propriété est en lecture seule.

.getIcon()

Historique
VersionModifications
v17 R5Ajout

.getIcon( { size : Integer } ) : Picture

ParamètresTypeDescription
sizeInteger->Longueur du côté de l'image retournée (pixels)
RésultatPicture<-Icône

|

Description

La fonction .getIcon() retourne l'icône du dossier.

Le paramètre optionnel size spécifie les dimensions en pixels de l'icône retournée. Cette valeur représente la longueur latérale du côté du carré contenant l'icône. La taille des icônes est généralement de 32x32 pixels (“grandes icônes”) ou de 16x16 pixels (“petites icônes”). Si vous passez 0 ou si vous omettez ce paramètre, la version "grandes icônes" est retournée.

Si le dossier n'existe pas sur disque, une icône vide est retournée par défaut.

Valeur retournée

Image de l'icône du dossier.

.hidden

Historique
VersionModifications
v17 R5Ajout

.hidden : Boolean

Description

La propriété .hidden retourne vrai si le dossier est défini comme "caché" au niveau du système, et faux sinon.

Cette propriété est en lecture seule.

.isAlias

Historique
VersionModifications
v17 R5Ajout

.isAlias : Boolean

Description

La propriété .isAlias retourne toujours faux pour un objet Folder.

Cette propriété est en lecture seule.

.isFile

Historique
VersionModifications
v17 R5Ajout

.isFile : Boolean

Description

La propriété .isFile retourne toujours faux pour un objet Folder.

Cette propriété est en lecture seule.

.isFolder

Historique
VersionModifications
v17 R5Ajout

.isFolder : Boolean

Description

La propriété .isFolder retourne toujours vrai pour un objet Folder.

Cette propriété est en lecture seule.

.isPackage

Historique
VersionModifications
v17 R5Ajout

.isPackage : Boolean

Description

La propriété .isPackage retourne vrai si le dossier est un paquet sur macOS (et existe sur le disque). Sinon, elle retourne false.

Sous Windows, .isPackage retourne toujours false.

Cette propriété est en lecture seule.

.modificationDate

Historique
VersionModifications
v17 R5Ajout

.modificationDate : Date

Description

La propriété .modificationDate retourne la date de la dernière modification du dossier.

Cette propriété est en lecture seule.

.modificationTime

Historique
VersionModifications
v17 R5Ajout

.modificationTime : Time

Description

La propriété .modificationTime retourne l'heure de la dernière modification du dossier (exprimé en nombre de secondes commençant à 00:00).

Cette propriété est en lecture seule.

.moveTo()

Historique
VersionModifications
v17 R5Ajout

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

ParamètresTypeDescription
dossierDestination4D.Folder->Dossier de destination
nouveauNomText->Nom complet du dossier déplacé
Résultat4D.Folder<-Dossier déplacé

|

Description

La fonction .moveTo() déplace ou renomme l'objet Folder (dossier source) dans l'objet destinationFolderspécifié.

Le destinationFolder doit exister sur disque, sinon une erreur est générée.

Par défaut, le dossier garde le même nom lorsqu'il est déplacé. Si vous souhaitez renommer le dossier déplacé, passez le nouveau nom complet dans le paramètre newName. Le nouveau nom doit être conforme aux règles de nommage (ex : il ne doit pas contenir de caractères tels que ":", "/", etc.), sinon une erreur est retournée.

Objet retourné

L'objet Folder déplacé.

Exemple

Vous souhaitez déplacer et renommer un dossier :

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

.name

Historique
VersionModifications
v17 R5Ajout

.name : Text

Description

La propriété .name retourne le nom du dossier, sans extension (le cas échéant).

Cette propriété est en lecture seule.

.original

Historique
VersionModifications
v17 R5Ajout

.original : 4D.Folder

Description

La propriété .original retourne le même objet Folder que le dossier.

Cette propriété est en lecture seule.

Cette propriété est disponible sur les dossiers pour permettre au code générique de traiter les dossiers ou les fichiers.

.parent

Historique
VersionModifications
v17 R5Ajout

.parent : 4D.Folder

Description

La propriété .parent retourne l'objet Folder parent du dossier. Si le chemin représente un filesystem (ex : "/DATA/"), le filesystem est retourné.

Si le dossier n'a pas de parent (racine), la valeur nulle est retournée.

Cette propriété est en lecture seule.

.path

Historique
VersionModifications
v17 R5Ajout

.path : Text

Description

La propriété .path retourne le chemin POSIX du dossier. Si le chemin représente un filesystem (ex : "/DATA/"), le filesystem est retourné.

Cette propriété est en lecture seule.

.platformPath

Historique
VersionModifications
v17 R5Ajout

.platformPath : Text

Description

La propriété .platformPath retourne le chemin du dossier exprimé avec la syntaxe de la plate-forme actuelle.

Cette propriété est en lecture seule.

.rename()

Historique
VersionModifications
v17 R5Ajout

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

ParamètresTypeDescription
nouveauNomText->Nouveau nom complet du dossier
Résultat4D.Folder<-Dossier renommé

|

Description

La fonction .rename() renomme le dossier avec le nom que vous avez passé dans newName et renvoie l'objet Folder renommé.

Le paramètre newName doit être conforme aux règles de nommage (ex : il ne doit pas contenir des caractères tels que ":", "/", etc.), sinon une erreur est retournée. S'il existe déjà un fichier portant le même nom, une erreur est retournée.

Objet retourné

L'objet Folder renommé.

Exemple

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