Aller au contenu principal
Version: v20 R4 BETA

File

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

Exemple

L'exemple suivant crée un fichier de préférences dans le dossier du projet :

var $created : Boolean
$created:=File("/PACKAGE/SpecialPrefs/"+Current user+".myPrefs").create()

Chemins d'accès

Les objets de type File prennent en charge plusieurs noms de chemin, y compris les syntaxes filesystems et posix. Les noms de chemin pris en charge sont détaillés dans la page Pathnames .

Objet File

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.File    copie l'objet File dans le dossier destinationFolder spécifié
.create() : Boolean     crée un fichier sur le disque selon les propriétés de l'objet File
.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 fichier
.creationTime : Time    l'heure de création du fichier
.delete()    supprime le fichier
.exists : Boolean    vrai si le fichier existe sur le disque
.extension : Text    l'extension du nom du fichier (le cas échéant)
.fullName : Text    le nom complet du fichier, y compris son extension (le cas échéant)
.getAppInfo() : Object    renvoie le contenu d'un fichier d'information .exe, .dll ou .plist sous la forme d'un objet
.getContent( ) : 4D.Blobrenvoie un objet 4D.Blob contenant le contenu entier d'un fichier
.getIcon( { size : Integer } ) : Picture    l'icône du fichier
.getText( { charSetName : Text { ; breakMode : Integer } } ) : Text
.getText( { charSetNum : Integer { ; breakMode : Integer } } ) : Text
    renvoie le contenu du fichier sous forme de texte
.hidden : Boolean    vrai si le fichier est défini comme "caché" au niveau du système
.isAlias : Boolean    vrai si le fichier est un alias, un raccourci, ou un lien symbolique
.isFile : Boolean    toujours vrai pour un fichier
.isFolder : Boolean    toujours vrai pour un fichier
.isWritable : Boolean    vrai si le fichier existe sur le disque et est accessible en écriture
.modificationDate : Date    la date de la dernière modification du fichier
.modificationTime : Time    l'heure de la dernière modification du fichier
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.File    déplace ou renomme l'objet File dans le destinationFolder spécifié
.name : Text    le nom du fichier sans extension (le cas échéant)
.open( { mode : Text } ) : 4D.FileHandle
.open( { options : Object } ) : 4D.FileHandle
    crée et renvoie un nouvel objet 4D.FileHandle sur le fichier, dans le mode spécifié ou avec les options spécifiées
.original : 4D.File
.original : 4D.Folder
    l'élément cible pour un alias, un raccourci, ou un fichier de lien symbolique
.parent : 4D.Folder    l'objet dossier parent du fichier
.path : Text    le chemin POSIX du fichier
.platformPath : Text    le chemin du fichier exprimé avec la syntaxe de la plate-forme courante
.rename( newName : Text ) : 4D.File    renomme le fichier avec le nom que vous avez passé dans newName et renvoie l'objet File renommé
.setAppInfo( info : Object )    écrit les propriétés de info comme contenu d'information d'un fichier .exe, .dll ou .plist
.setContent ( content : Blob )     réécrit le contenu intégral du fichier à l'aide des données stockées dans le BLOB content
.setText ( text : Text {; charSetName : Text { ; breakMode : Integer } } )
.setText ( text : Text {; charSetNum : Integer { ; breakMode : Integer } } )
    écrit text comme nouveau contenu du fichier
.size : Real    la taille du fichier exprimée en octets

File

Historique
VersionModifications
v19 R4Nouvelle constante HTTP Client log file
v17 R5Ajout

File ( path : Text { ; pathType : Integer }{ ; } ) : 4D.File
File (
fileConstant : Integer { ; } ) : 4D.File

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

|

Description

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

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

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

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

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)

File ( fileConstant { ; * } )

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

ConstanteValeurCommentaire
Backup history file19Fichier d'historique des sauvegardes (voir Fichiers de configuration et de suivi). Stocké dans le dossier de destination de sauvegarde.
Backup log file13Fichier journal des sauvegardes courant. Stocké dans le dossier Logs de l'application.
Backup settings file1Fichier backup.4DSettings par défaut (format xml), stocké dans le dossier Settings du projet
Backup settings file for data17fichier backup.4DSettings du fichier de données (format xml), stocké dans le dossier Settings du dossier data
Build application log file14Fichier d'historique courant au format xml du générateur d'application. Stocké dans le dossier Logs.
Build application settings file20Fichier de configuration par défaut du générateur d'application ("buildApp.4DSettings"). Stocké dans le dossier Settings du projet.
Compacting log file6Fichier d'historique du compactage le plus récent de la base, effectué avec la commande Compact data file ou le Centre de sécurité et de maintenance (CSM). Stocké dans le dossier Logs.
Current backup settings file18fichier backup.4DSettings utilisé actuellement par l'application. Il peut s'agir du fichier backup.4DSettings par défaut ou d'un fichier de settings de backup utilisateur défini pour le fichier de données
Debug log file12Fichier d'enregistrement des événements pour le débogage créé par la commande SET DATABASE PARAMETER(Debug log recording). Stocké dans le dossier Logs.
Diagnostic log file11Fichier de diagnostic de 4D, créé par la commande SET DATABASE PARAMETER(Diagnostic log recording). Stocké dans le dossier Logs.
Directory file16fichier directory.json, contenant la description des groupes et utilisateurs (le cas échéant) du projet. Il se situe soit dans le dossier Settings de l'utilisateur (par défaut, s'applique à tout le projet), soit dans le dossier Settings du data (spécifique à un fichier de données).
HTTP Client log file24Fichier journal créé par la commande HTTP SET OPTION(HTTP client log). Stocké dans le dossier Logs.
HTTP debug log file9Fichier d'enregistrement des requêtes Web créé par la commande WEB SET OPTION(Web log recording). Stocké dans le dossier Logs.
HTTP log file8Fichier de débogage des requêtes HTTP, créé par la commande WEB SET OPTION(Web debug log). Stocké dans le dossier Logs.
IMAP Log file23Fichier d'historique créé par la commande SET DATABASE PARAMETER(IMAP Log). Stocké dans le dossier Logs.
Last backup file2Dernier fichier de sauvegarde généré, nommé \<applicationName>[bkpNum].4BK, stocké à un emplacement personnalisé.
Last journal integration log file22Chemin complet du dernier fichier journal d'intégration de l'historique (stocké dans le dossier Logs de l'application restaurée), le cas échéant. Ce fichier est créé en mode auto-repair, dès qu'une intégration de fichier d'historique a lieu
Repair log file7Fichier d'historique des réparations effectuées sur la base par le Centre de sécurité et de maintenance (CSM). Stocké dans le dossier Logs.
Request log file10Fichier des requêtes client/server standard (hors requêtes Web), créé par SET DATABASE PARAMETER(4D Server log recording) ou SET DATABASE PARAMETER(Client log recording). Si la commande est appelée sur le serveur, le chemin du fichier des requêtes du serveur est retourné (stocké dans le dossier Logs du serveur). Si la commande est appelée sur un client, le chemin du fichier des requêtes du client est retourné (stocké dans le dossier Logs local du client).
SMTP log file15Fichier des requêtes SMTP créé par la commande SET DATABASE PARAMETER(SMTP Log). Stocké dans le dossier Logs.
User settings file3Fichier settings.4DSettings pour tous les fichiers de données (si activé), stocké dans le dossier Preferences à côté du fichier de structure.
User settings file for data4Fichier settings.4DSettings file pour le fichier de données courant, stocké dans le dossier Preferences à côté du fichier de données.
Verification log file5Fichier d'historique de vérification le plus récent de la base, créé par les commandes VERIFY CURRENT DATA FILE et VERIFY DATA FILE ou via le Centre de sécurité et de maintenance de la base (CSM). Stocké dans le dossier Logs.

Si le fichier fileConstant cible n'existe pas, un objet null est retourné. Aucune erreur n'est générée.

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é.

4D.File.new()

Historique
VersionModifications
v18 R6Ajout

4D.File.new ( path : Text { ; pathType : Integer }{ ; } ) : 4D.File
4D.File.new (
fileConstant : Integer { ; } ) : 4D.File

Description

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

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

.copyTo()

Historique
VersionModifications
v17 R5Ajout

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

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

|

Description

La fonction .copyTo() copie l'objet File dans le dossier destinationFolder spécifié .

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

Par défaut, le fichier est copié avec le nom du fichier 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 fichier 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 File copié.

Exemple

Vous souhaitez copier un file image, à partir du dossier Documents de l'utilisateur vers le dossier de la base :

var $source; $copy : Object
$source:=Folder(fk documents folder).file("Pictures/photo.png")
$copy:=$source.copyTo(Folder("/PACKAGE");fk overwrite)

.create()

Historique
VersionModifications
v17 R5Ajout

Non disponible pour les archives ZIP

.create() : Boolean

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

|

Description

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

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 fichier 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 fichier est créé avec succès ;
  • Faux si un fichier du même nom existe déjà ou si une erreur s'est produite.

Exemple

Création d'un fichier de préférences dans le dossier principal :

 var $created : Boolean
$created:=File("/PACKAGE/SpecialPrefs/"+Current user+".myPrefs").create()

.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 du fichier de l'alias ou du raccourci

|

Description

La fonction .createAlias() crée un alias (macOS) ou un raccourci (Windows) pour le fichier nommé aliasName 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 fichier contenu dans votre dossier principal :

 $myFile:=Folder(fk documents folder).file("Archives/ReadMe.txt")
$aliasFile:=$myFile.createAlias(File("/PACKAGE");"ReadMe")

.creationDate

Historique
VersionModifications
v17 R5Ajout

.creationDate : Date

Description

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

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 fichier (exprimé en nombre de secondes commençant à 00:00).

Cette propriété est en lecture seule.

.delete()

Historique
VersionModifications
v17 R5Ajout

.delete()

ParamètresTypeDescription
Ne requiert aucun paramètre

|

Description

La fonction delete() supprime le fichier.

Si le fichier n'existe pas sur le disque, la fonction ne fait rien (aucune erreur n'est générée).

Si le fichier est actuellement ouvert, le résultat dépend du système d'exploitation :

  • sous Windows, une erreur est générée,
  • sous macOS, aucune erreur n'est générée et le fichier est supprimé.
caution

.delete() peut supprimer n'importe quel fichier sur un disque. Cela inclut les documents créés avec d'autres applications, ainsi que les applications elles-mêmes. .delete() doit être utilisé avec prudence. La suppression d'un fichier est une opération permanente et irréversible.

Exemple

Vous souhaitez supprimer un fichier spécifique dans le dossier de la base de données :

 $tempo:=File("/PACKAGE/SpecialPrefs/"+Current user+".prefs")
If($tempo.exists)
$tempo.delete()
ALERT("User preference file deleted.")
End if

.exists

Historique
VersionModifications
v17 R5Ajout

.exists : Boolean

Description

La propriété .exists retourne vrai si le fichier 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 fichier (le cas échéant). Une extension commence toujours par ".". La propriété renvoie une chaîne vide si le nom du fichier n'a pas d'extension.

Cette propriété est en lecture seule.

.fullName

Historique
VersionModifications
v17 R5Ajout

.fullName : Text

Description

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

Cette propriété est en lecture seule.

.getAppInfo()

Historique
VersionModifications
v19Ajout

.getAppInfo() : Object

ParamètresTypeDescription
RésultatObject<-Contenu du fichier version resource .exe/.dll ou .plist

|

Description

La fonction .getAppInfo() renvoie le contenu d'un fichier d'information .exe, .dll ou .plist sous la forme d'un objet.

La fonction doit être utilisée avec un fichier .exe, .dll ou .plist existant. Si le fichier n'existe pas sur le disque ou n'est pas un fichier .exe, .dll ou .plist valide, la fonction renvoie un objet vide (aucune erreur n'est générée).

Cette fonction ne prend en charge que les fichiers .plist au format xml (texte). Une erreur est retournée si elle est utilisée avec un fichier .plist au format binaire.

Objet retourné dans le cas d'un fichier .exe ou .dll

La lecture d'un fichier .exe ou .dll est possible uniquement sous Windows.

Toutes les valeurs de propriétés sont de type Texte.

PropriétéType
InternalNameText
ProductNameText
CompanyNameText
LegalCopyrightText
ProductVersionText
FileDescriptionText
FileVersionText
OriginalFilenameText

Objet retourné dans le cas d'un fichier .plist

Le contenu du fichier xml est analysé et les clés sont renvoyées en tant que propriétés de l'objet, en préservant leur type (texte, booléen, numérique). .plist dict est renvoyé sous forme d'objet JSON et .plist array est renvoyé sous forme de tableau JSON.

Exemple

 // display copyright info of application .exe file (windows)
var $exeFile : 4D.File
var $info : Object
$exeFile:=File(Application file; fk platform path)
$info:=$exeFile.getAppInfo()
ALERT($info.LegalCopyright)

// display copyright info of an info.plist (any platform)
var $infoPlistFile : 4D.File
var $info : Object
$infoPlistFile:=File("/RESOURCES/info.plist")
$info:=$infoPlistFile.getAppInfo()
ALERT($info.Copyright)

Voir également

.setAppInfo()

.getContent()

Historique
VersionModifications
v19 R2Retourne 4D.Blob
v17 R5Ajout

.getContent( ) : 4D.Blob

ParamètresTypeDescription
Résultat4D.Blob<-Contenu du fichier

|

Description

La fonction .getContent() renvoie un objet 4D.Blob contenant le contenu entier d'un fichier. Pour plus d'informations sur les BLOBs, veuillez vous reporter à la section BLOB.

Valeur retournée

Un objet 4D.Blob.

Exemple

Pour sauvegarder le contenu d'un document dans un champ BLOB :

 var $vPath : Text
$vPath:=Select document("";"*";"Select a document";0)
If(OK=1) //Si un document a été sélectionné
[aTable]aBlobField:=File($vPath;fk platform path).getContent()
End if

.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 fichier.

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 fichier n'existe pas sur disque, une icône par défaut vide est retournée.

Valeur retournée

Image de l'icône du fichier.

.getText()

Historique
VersionModifications
v17 R5Ajout

.getText( { charSetName : Text { ; breakMode : Integer } } ) : Text
.getText( { charSetNum : Integer { ; breakMode : Integer } } ) : Text

ParamètresTypeDescription
charSetNameText->Nom du jeu de caractères
charSetNumInteger->Numéro du jeu de caractères
breakModeInteger->Mode de traitement des retours à la ligne
RésultatText<-Texte du document

|

Description

La fonction .getText() renvoie le contenu du fichier sous forme de texte .

Optionnellement, vous pouvez indiquer le jeu de caractères à utiliser pour la lecture du contenu. Vous pouvez passer soit :

  • dans charSetName, une chaîne contenant le nom de jeu standard (par exemple "ISO-8859-1" ou "UTF-8"),
  • ou dans charSetNum, l'ID MIBEnum (numéro) du nom du jeu standard.

Pour consulter la liste des jeux de caractères pris en charge par 4D, veuillez vous reporter à la description de la commande CONVERT FROM TEXT.

Si le document contient un BOM (Byte Order Mark), 4D utilise le jeu de caractères inséré au lieu de celui qui est indiqué dans charSetName or charSetNum (ce paramètre est alors ignoré). Si le document ne contient pas de BOM et si le paramètre charSetName ou charSetNum est omis, 4D utilise par défaut le jeu de caractères "UTF-8".

Dans le paramètre breakMode, vous pouvez passer une valeur numérique indiquant le traitement à appliquer aux caractères de fin de ligne du document. Les constantes suivantes du thème "Documents système" sont disponibles :

ConstanteValeurCommentaire
Document unchanged0Aucun traitement
Document with native format1(Défaut) Les fins de ligne sont convertis au format natif de la plate-forme d’exécution : CR (carriage return) sous OS X, CRLF (carriage return + line feed) sous Windows
Document with CRLF2Les fins de ligne sont convertis au format Windows : CRLF (carriage return + line feed)
Document with CR3Les fins de ligne sont convertis au format OS X : CR (carriage return)
Document with LF4Les fins de ligne sont convertis au format Unix : LF (line feed)

Par défaut, lorsque vous omettez le paramètre breakMode les retours à la ligne sont traités en mode natif (1).

Valeur retournée

Texte du fichier.

Exemple

Considérons le document texte suivant (les champs sont séparés par des tabulations ) :

id name price vat
3 thé 1.06€ 19.6
2 café 1.05€ 19.6

Lorsque vous exécutez ce code :

 $myFile:=Folder(fk documents folder).file("Billing.txt") //UTF-8 par défaut
$txt:=$myFile.getText()

... vous obtenez pour $txt :

"id\tname\tprice\tvat\r\n3\tthé\t1.06€\t19.6\r\n2\tcafé\t1.05€\t19.6"

avec \t (tab) comme séparateur et \r\n (CRLF) comme délimiteur de ligne.

Voici un autre exemple avec le même fichier, mais un délimiteur de ligne différent :

 $txt:=$myFile.getText("UTF-8"; Document with LF)

Dans ce cas, le contenu de $txt est :

"id\tname\tprice\tvat\n3\tthé\t1.06€\t19.6\n2\tcafé\t1.05€\t19.6"

Cette fois-ci \n (LF) est utilisé comme délimiteur de ligne.

.hidden

Historique
VersionModifications
v17 R5Ajout

.hidden : Boolean

Description

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

Cette propriété est en lecture/écriture.

.isAlias

Historique
VersionModifications
v17 R5Ajout

.isAlias : Boolean

Description

La propriété .isAlias retourne vrai si le fichier est un alias, un raccourci, ou un lien symbolique, et faux sinon.

Cette propriété est en lecture seule.

.isFile

Historique
VersionModifications
v17 R5Ajout

.isFile : Boolean

Description

La propriété .isFile retourne toujours vrai pour un fichier.

Cette propriété est en lecture seule.

.isFolder

Historique
VersionModifications
v17 R5Ajout

.isFolder : Boolean

Description

La propriété .isFolder retourne toujours vrai pour un fichier.

Cette propriété est en lecture seule.

.isWritable

Historique
VersionModifications
v17 R5Ajout

.isWritable : Boolean

Description

La propriété .isWritable retourne vrai si le fichier existe sur le disque et est accessible en écriture.

Cette propriété vérifie la capacité de l'application 4D à écrire sur le disque (droits d'accès). elle ne se base pas uniquement sur l'attribut writable du fichier.

Cette propriété est en lecture seule.

Exemple

 $myFile:=File("C:\\Documents\\Archives\\ReadMe.txt";fk platform path)
If($myFile.isWritable)
$myNewFile:=$myFile.setText("Added text")
End if

.modificationDate

Historique
VersionModifications
v17 R5Ajout

.modificationDate : Date

Description

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

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 fichier (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.File

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

|

Description

La fonction .moveTo() déplace ou renomme l'objet File dans le destinationFolder spécifié.

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

Par défaut, le fichier garde le même nom lorsqu'il est déplacé. Si vous souhaitez renommer le fichier déplacé, passez le 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 File déplacé.

Exemple

$DocFolder:=Folder(fk documents folder)
$myFile:=$DocFolder.file("Current/Infos.txt")
$myFile.moveTo($DocFolder.folder("Archives");"Infos_old.txt")

.name

Historique
VersionModifications
v17 R5Ajout

.name : Text

Description

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

Cette propriété est en lecture seule.

.open()

Historique
VersionModifications
v19 R7Ajout

.open( { mode : Text } ) : 4D.FileHandle
.open( { options : Object } ) : 4D.FileHandle

ParamètresTypeDescription
modeText->Mode d'ouverture : "read", "write", "append"
optionsObject->Options d'ouverture
Résultat4D.FileHandle<-Nouvel objet File handle

|

Description

La fonction .open() crée et renvoie un nouvel objet 4D.FileHandle sur le fichier, dans le mode spécifié ou avec les options spécifiées. Vous pouvez utiliser les fonctions et les propriétés de la classe 4D.FileHandle pour écrire, lire ou ajouter du contenu au fichier.

Si vous utilisez le paramètre mode (texte), passez le mode d'ouverture pour le file handle :

modeDescription
"read"(Par défaut) Crée un file handle pour lire les valeurs dans le fichier. Si le fichier n'existe pas sur disque, une erreur est renvoyée. Vous pouvez ouvrir autant de file handles que vous voulez en mode "read" sur le même objet File.
"write"Crée un file handle pour écrire des valeurs dans le fichier (en commençant par le début du contenu du fichier). Si le fichier n'existe pas sur le disque, il est créé. Vous ne pouvez ouvrir qu'un seul file handle en mode "write" sur le même objet File.
"append"Crée un file handle pour écrire des valeurs dans le fichier (en commençant par la fin du fichier). Si le fichier n'existe pas sur le disque, il est créé. Vous ne pouvez ouvrir qu'un seul file handle en mode "append" sur le même objet File.

La valeur du paramètre mode est sensible à la casse.

Si vous utilisez le paramètre options (objet), vous pouvez passer d'autres options pour le file handle par le biais des propriétés suivantes (ces propriétés peuvent être lues ultérieurement à partir de l'objet file handle ouvert) :

optionsTypeDescriptionPar défaut
.modeTextMode d'ouverture (voir mode ci-dessus)"read"
.charsetTextJeu de caractères utilisé lors de la lecture ou de l'écriture dans le fichier. Utilisez le nom standard du jeu (par exemple "ISO-8859-1" ou "UTF-8")"UTF-8"
.breakModeReadText ou numériqueMode de traitement des sauts de ligne utilisés lors de la lecture du fichier (voir ci-dessous)"native" ou 1
.breakModeWriteText ou numériqueMode de traitement des sauts de ligne utilisés lors de l'écriture dans le fichier (voir ci-dessous)"native" ou 1

La fonction remplace tous les délimiteurs de fin de ligne d'origine. Par défaut, le délimiteur natif est utilisé, mais vous pouvez définir un autre délimiteur. Les propriétés .breakModeRead et .breakModeWrite indiquent le traitement à appliquer aux caractères de fin de ligne dans le document. Vous pouvez utiliser l'une des valeurs suivantes (texte ou numérique) :

Mode de rupture en texteBreak mode en numérique (constante)Description
"native"1 (Document with native format)(Défaut) Les fins de ligne sont convertis au format natif de la plate-forme d’exécution : LF (line feed) sous macOS, CRLF (carriage return + line feed) sous Windows
"crlf"2 (Document with CRLF)Les fins de ligne sont converties en CRLF (retour chariot + saut de ligne), le format par défaut de Windows
"cr"3 (Document with CR)Les fins de ligne sont converties en CR (retour chariot), le format MacOS classique par défaut
"lf"4 (Document with LF)Les fins de ligne sont converties en LF (line feed), le format Unix et macOS par défaut

La valeur du paramètre break mode en texte est sensible à la casse.

Exemple

Vous voulez créer un file handle pour lire le fichier "ReadMe.txt" :

var $f : 4D.File
var $fhandle : 4D.FileHandle

$f:=File("C:\\Documents\\Archives\\ReadMe.txt";fk platform path)
$fhandle:=$f.open("read")

.original

Historique
VersionModifications
v17 R5Ajout

.original : 4D.File
.original : 4D.Folder

Description

La propriété .original retourne l'élément cible pour un alias, un raccourci, ou un fichier de lien symbolique. L'élément cible peut être :

  • un objet File
  • un objet Folder

Pour les fichiers sans alias, la propriété retourne le même objet File que le fichier.

Cette propriété est en lecture seule.

.parent

Historique
VersionModifications
v17 R5Ajout

.parent : 4D.Folder

Description

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

Cette propriété est en lecture seule.

.path

Historique
VersionModifications
v17 R5Ajout

.path : Text

Description

La propriété .path retourne le chemin POSIX du fichier. 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 fichier exprimé avec la syntaxe de la plate-forme courante.

Cette propriété est en lecture seule.

.rename()

Historique
VersionModifications
v17 R5Ajout

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

ParamètresTypeDescription
nouveauNomText->Nouveau nom complet du fichier
Résultat4D.File<-Fichier renommé

|

Description

La fonction .rename() renomme le fichier avec le nom que vous avez passé dans newName et renvoie l'objet File 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.

A noter que la fonction modifie le nom complet du fichier, c'est-à-dire que si vous ne passez pas une extension dans le paramètre newName, le fichier aura un nom sans extension.

Objet retourné

L'objet File renommé.

Exemple

Vous souhaitez que "ReadMe.txt" soit renommé "ReadMe_new.txt" :

 $toRename:=File("C:\\Documents\\Archives\\ReadMe.txt";fk platform path)
$newName:=$toRename.rename($toRename.name+"_new"+$toRename.extension)

.setAppInfo()

Historique
VersionModifications
v20Prise en charge de WinIcon
v19Ajout

.setAppInfo( info : Object )

ParamètresTypeDescription
infoObject->Propriétés à écrire dans le fichier .plist ou la ressource version du fichier .exe/.dll

|

Description

La fonction .setAppInfo() écrit les propriétés de info comme contenu d'information d'un fichier .exe, .dll ou .plist.

La fonction doit être utilisée avec un fichier .exe, .dll ou .plist existant. Si le fichier n'existe pas sur le disque ou n'est pas un fichier .exe, .dll ou .plist valide, la fonction ne fait rien (aucune erreur n'est générée).

Cette fonction ne prend en charge que les fichiers .plist au format xml (texte). Une erreur est retournée si elle est utilisée avec un fichier .plist au format binaire.

Paramètre info avec un fichier .exe or .dll

Ecrire les informations de fichiers .exe ou .dll est possible uniquement sous Windows.

Chaque propriété valide définie dans le paramètre objet info est écrite dans la ressource de version du fichier .exe ou .dll. Les propriétés disponibles sont (toute autre propriété sera ignorée) :

PropriétéTypeCommentaire
InternalNameText
ProductNameText
CompanyNameText
LegalCopyrightText
ProductVersionText
FileDescriptionText
FileVersionText
OriginalFilenameText
WinIconTextChemin Posix du fichier .ico. Cette propriété ne s'applique qu'aux fichiers exécutables générés par 4D.

Pour toutes les propriétés à l'exception de WinIcon, si vous passez un texte null ou vide comme valeur, une chaîne vide est écrite dans la propriété. Si vous passez une valeur de type autre que Texte, elle est "stringifiée".

Pour la propriété WinIcon, si le fichier d'icône n'existe pas ou a un format incorrect, une erreur est générée.

Paramètre info avec un fichier .plist

Chaque propriété valide définie dans le paramètre objet info est écrite dans le fichier . plist sous forme de clé. Tous les noms de clés sont acceptés. Les types des valeurs sont préservés si possible.

Si une clé définie dans le paramètre info est déjà définie dans le fichier .plist, sa valeur est mise à jour tout en conservant son type d'origine. Les autres clés définies dans le fichier .plist ne sont pas modifiées.

Pour définir une valeur de type Date, le format à utiliser est chaîne de timestamp json formatée en ISO UTC sans les millisecondes ("2003-02-01T01:02:03Z") comme dans l'éditeur de plist Xcode.

Exemple

  // définir le copyright, la version et l'icône d'un fichier .exe (Windows)
var $exeFile; $iconFile : 4D.File
var $info : Object
$exeFile:=File(Application file ; fk platform path)
$iconFile:=File("/RESOURCES/myApp.ico")
$info:=Nouvel objet
$info.LegalCopyright:="Copyright 4D 2023"
$info.ProductVersion:="1.0.0"
$info.WinIcon:=$iconFile.path
$exeFile.setAppInfo($info)
  // définir certaines clés dans un fichier info.plist (toutes plateformes)
var $infoPlistFile : 4D.File
var $info : Object
$infoPlistFile:=File("/RESOURCES/info.plist")
$info:=Nouvel objet
$info.Copyright:="Copyright 4D 2023" //text
$info.ProductVersion:=12 //integer .ShipmentDate:="2023-04-22T06:00:00Z" //timestamp .ProductVersion:=12 //integer
$info.ShipmentDate:="2023-04-22T06:00:00Z" //timestamp
$info.CFBundleIconFile:="myApp.icns" //pour macOS
$infoPlistFile.setAppInfo($info)

Voir également

.getAppInfo()

.setContent()

Historique
VersionModifications
v17 R5Ajout

.setContent ( content : Blob )

ParamètresTypeDescription
contentBLOB->Nouveau contenu du fichier

|

Description

La fonction .setContent() réécrit le contenu intégral du fichier à l'aide des données stockées dans le BLOB content. Pour plus d'informations sur les BLOBs, veuillez vous reporter à la section BLOB.

Exemple

 $myFile:=Folder(fk documents folder).file("Archives/data.txt")
$myFile.setContent([aTable]aBlobField)

.setText()

Historique
VersionModifications
v19 R3Par défaut pour les nouveaux projets : pas de BOM et (macOS) LF comme saut de ligne
v17 R5Ajout

.setText ( text : Text {; charSetName : Text { ; breakMode : Integer } } )
.setText ( text : Text {; charSetNum : Integer { ; breakMode : Integer } } )

ParamètresTypeDescription
textText->Texte à stocker dans le fichier
charSetNameText->Nom du jeu de caractères
charSetNumInteger->Numéro du jeu de caractères
breakModeInteger->Mode de traitement des retours à la ligne

|

Description

La fonction .setText() écrit text comme nouveau contenu du fichier.

Si le fichier référencé dans l'objet File n'existe pas sur disque, il est créé par la fonction. Lorsque le fichier existe déjà sur disque, son contenu antérieur est supprimé, sauf s'il est déjà ouvert, auquel cas son contenu est verrouillé et une erreur est générée.

Dans le paramètre text, passez le texte à écrire dans le fichier. Cela peut être un texte littéral ("my text"), ou un champ / variable texte 4D.

Optionnellement, vous pouvez indiquer le jeu de caractères à utiliser pour l'écriture du contenu. Vous pouvez passer soit :

  • dans charSetName, une chaîne contenant le nom de jeu standard (par exemple "ISO-8859-1" ou "UTF-8"),
  • ou dans charSetNum, l'ID MIBEnum (numéro) du nom du jeu standard.

Pour consulter la liste des jeux de caractères pris en charge par 4D, veuillez vous reporter à la description de la commande CONVERT FROM TEXT.

Si une marque d'ordre d'octet (BOM) existe pour le jeu de caractères, 4D l'insère dans le fichier, sauf si le jeu de caractères utilisé contient le suffixe "-no-bom" (par exemple "UTF-8-no-bom"). Si vous n'indiquez pas un jeu de caractères, 4D utilise par défaut le jeu de caractères "UTF-8" sans BOM.

Dans le paramètre breakMode, vous pouvez passer une valeur numérique indiquant le traitement à appliquer aux caractères de fin de ligne avant de les stocker dans le fichier. Les constantes suivantes du thème Documents système sont disponibles :

ConstanteValeurCommentaire
Document unchanged0Aucun traitement
Document with native format1(Défaut) Les fins de ligne sont convertis au format natif de la plate-forme d’exécution : LF (line feed) sous macOS, CRLF (carriage return + line feed) sous Windows
Document with CRLF2Les fins de ligne sont converties en CRLF (retour chariot + saut de ligne), le format par défaut de Windows
Document with CR3Les fins de ligne sont converties en CR (retour chariot), le format MacOS classique par défaut
Document with LF4Les fins de ligne sont converties en LF (line feed), le format Unix et macOS par défaut

Par défaut, lorsque vous omettez le paramètre breakMode les retours à la ligne sont traités en mode natif (1).

Note de compatibilité : Des options de compatibilité sont disponibles pour la gestion des fins de ligne et des BOM. Voir la page Compatibilité sur doc.4d.com.

Exemple

$myFile:=File("C:\\Documents\\Hello.txt";fk platform path)
$myFile.setText("Hello world")

.size

Historique
VersionModifications
v17 R5Ajout

.size : Real

Description

La propriété .size renvoie la taille du fichier exprimée en octets. Si le fichier n'existe pas sur le disque, la taille est de 0.

Cette propriété est en lecture seule.