Aller au contenu principal
Version: 20 R7 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 chemins d'accès pris en charge sont détaillés dans la page Chemins d'accès.

Objet File

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.File
copie l'objet File vers le destinationFolder spécifié
.create() : Boolean
crée un fichier sur disque en fonction des 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
true si le fichier existe sur le disque
.extension : Text
l'extension du nom du fichier (s'il y en a une)
.fullName : Text
le nom complet du fichier, y compris son extension (le cas échéant)
.getAppInfo() : Object
retourne le contenu d'un fichier d'information .exe, .dll ou .plist sous forme d'objet
.getContent( ) : 4D.Blobretourne un objet 4D.Blob contenant le contenu intégral du fichier
.getIcon( { size : Integer } ) : Picture
l'icône du fichier
.getText( { charSetName : Text { ; breakMode : Integer } } ) : Text
.getText( { charSetNum : Integer { ; breakMode : Integer } } ) : Text

retourne le contenu du fichier sous forme de texte
.hidden : Boolean
true si le fichier est défini comme "hidden" au niveau du système
.isAlias : Boolean
true si le fichier est un alias, un raccourci ou un lien symbolique
.isFile : Boolean
toujours true pour un fichier
.isFolder : Boolean
toujours false pour un fichier
.isWritable : Boolean
true si le fichier existe sur le disque et est modifiable
.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 déplace et renomme l'objet File dans le dossier destinationFolder spécifié
.name : Text
le nom du fichier sans extension (s'il y en a une)
.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 d'un fichier alias, d'un raccourci ou d'un 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é dans 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 retourne l'objet File renommé
.setAppInfo( info : Object )
écrit les propriétés info en tant que contenu d'information d'un fichier .exe, .dll ou .plist
.setContent ( content : Blob )
réécrit l'intégralité du contenu du fichier en utilisant les 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

4D.File.new()

Historique
ReleaseModifications
18 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 retourne un nouvel objet de type 4D.File. Elle est identique à la commande File (raccourci).

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

.copyTo()

Historique
ReleaseModifications
17 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 vers le 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
ReleaseModifications
17 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 disque en fonction des 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
ReleaseModifications
17 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) vers le fichier avec le nom aliasName spécifié 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
ReleaseModifications
17 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
ReleaseModifications
17 R5Ajout

.creationTime : Time

Description

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

Cette propriété est en lecture seule.

.delete()

Historique
ReleaseModifications
17 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
ReleaseModifications
17 R5Ajout

.exists : Boolean

Description

La propriété .exists renvoie true si le fichier existe sur le disque, et false sinon.

Cette propriété est en lecture seule.

.extension

Historique
ReleaseModifications
17 R5Ajout

.extension : Text

Description

La propriété .extension renvoie l'extension du nom du fichier (s'il y en a une). 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
ReleaseModifications
17 R5Ajout

.fullName : Text

Description

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

Cette propriété est en lecture seule.

.getAppInfo()

Historique
ReleaseModifications
19Ajout

.getAppInfo() : Object

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

Description

La fonction .getAppInfo() retourne le contenu d'un fichier d'information .exe, .dll ou .plist sous forme d'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
ReleaseModifications
19 R2Retourne 4D.Blob
17 R5Ajout

.getContent( ) : 4D.Blob

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

Description

La fonction .getContent() retourne un objet 4D.Blob contenant le contenu intégral du 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
ReleaseModifications
17 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
ReleaseModifications
17 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() retourne 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 ce qui suit 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
ReleaseModifications
17 R5Ajout

.hidden : Boolean

Description

La propriété .hidden renvoie true si le fichier est défini comme "hidden" au niveau du système, et false dans le cas contraire.

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

.isAlias

Historique
ReleaseModifications
17 R5Ajout

.isAlias : Boolean

Description

La propriété .isAlias renvoie true si le fichier est un alias, un raccourci ou un lien symbolique, et false dans le cas contraire.

Cette propriété est en lecture seule.

.isFile

Historique
ReleaseModifications
17 R5Ajout

.isFile : Boolean

Description

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

Cette propriété est en lecture seule.

.isFolder

Historique
ReleaseModifications
17 R5Ajout

.isFolder : Boolean

Description

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

Cette propriété est en lecture seule.

.isWritable

Historique
ReleaseModifications
17 R5Ajout

.isWritable : Boolean

Description

La propriété .isWritable renvoie true si le fichier existe sur le disque et est modifiable.

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.

Example

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

.modificationDate

Historique
ReleaseModifications
17 R5Ajout

.modificationDate : Date

Description

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

Cette propriété est en lecture seule.

.modificationTime

Historique
ReleaseModifications
17 R5Ajout

.modificationTime : Time

Description

La propriété .modificationTime renvoie l'heure de la dernière modification du fichier (exprimée en nombre de secondes à partir de 00:00).

Cette propriété est en lecture seule.

.moveTo()

Historique
ReleaseModifications
17 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 déplace et renomme 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 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
ReleaseModifications
17 R5Ajout

.name : Text

Description

La propriété .name renvoie le nom du fichier sans extension (s'il y en a une).

Cette propriété est en lecture seule.

.open()

Historique
ReleaseModifications
19 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
ReleaseModifications
17 R5Ajout

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

Description

La propriété .original renvoie l'élément cible d'un fichier alias, d'un raccourci ou d'un 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
ReleaseModifications
17 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
ReleaseModifications
17 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
ReleaseModifications
17 R5Ajout

.platformPath : Text

Description

La propriété .platformPath retourne le chemin du fichier exprimé dans la syntaxe de la plate-forme courante.

Cette propriété est en lecture seule.

.rename()

Historique
ReleaseModifications
17 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 retourne 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
ReleaseModifications
20Prise en charge de WinIcon
19Ajout

.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 info en tant que 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

La modification des informations d'un fichier .exe ou .dll n'est possible que 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
ReleaseModifications
17 R5Ajout

.setContent ( content : Blob )

ParamètresTypeDescription
contentBLOB->Nouveau contenu du fichier

Description

La fonction .setContent() réécrit l'intégralité du contenu du fichier en utilisant les 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
ReleaseModifications
19 R3Par défaut pour les nouveaux projets : pas de BOM et (macOS) LF comme saut de ligne
17 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
ReleaseModifications
17 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.