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
Release | Modifications |
---|---|
18 R6 | Ajout |
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 de4D.File.new()
.
.copyTo()
Historique
Release | Modifications |
---|---|
17 R5 | Ajout |
.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.File
Paramètres | Type | Description | |
---|---|---|---|
dossierDestination | 4D.Folder | -> | Dossier de destination |
nouveauNom | Text | -> | Nom de la copie |
overwrite | Integer | -> | fk overwrite pour écraser les éléments existants |
Résultat | 4D.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 :
Constante | Valeur | Commentaire |
---|---|---|
fk overwrite | 4 | É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
Release | Modifications |
---|---|
17 R5 | Ajout |
Non disponible pour les archives ZIP
.create() : Boolean
Paramètres | Type | Description | |
---|---|---|---|
Résultat | Boolean | <- | 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
Release | Modifications |
---|---|
17 R5 | Ajout |
.createAlias( destinationFolder : 4D.Folder ; aliasName : Text { ; aliasType : Integer } ) : 4D.File
Paramètres | Type | Description | |
---|---|---|---|
dossierDestination | 4D.Folder | -> | Dossier de destination pour l'alias ou le raccourci |
aliasName | Text | -> | Nom de l'alias ou du raccourci |
aliasType | Integer | -> | Type de lien de l'alias |
Résultat | 4D.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 :
Constante | Valeur | Commentaire |
---|---|---|
fk alias link | 0 | Lien alias (macOS uniquement)(par défaut) |
fk symbolic link | 1 | Lien 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
Release | Modifications |
---|---|
17 R5 | Ajout |
.creationDate : Date
Description
La propriété .creationDate
retourne la date de création du fichier.
Cette propriété est en lecture seule.
.creationTime
Historique
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.delete()
Paramètres | Type | Description | |
---|---|---|---|
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é.
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
19 | Ajout |
.getAppInfo() : Object
Paramètres | Type | Description | |
---|---|---|---|
Résultat | Object | <- | 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 |
---|---|
InternalName | Text |
ProductName | Text |
CompanyName | Text |
LegalCopyright | Text |
ProductVersion | Text |
FileDescription | Text |
FileVersion | Text |
OriginalFilename | Text |
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
.getContent()
Historique
Release | Modifications |
---|---|
19 R2 | Retourne 4D.Blob |
17 R5 | Ajout |
.getContent( ) : 4D.Blob
Paramètres | Type | Description | |
---|---|---|---|
Résultat | 4D.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.getIcon( { size : Integer } ) : Picture
Paramètres | Type | Description | |
---|---|---|---|
size | Integer | -> | Longueur du côté de l'image retournée (pixels) |
Résultat | Picture | <- | 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
Release | Modifications |
---|---|
17 R5 | Ajout |
.getText( { charSetName : Text { ; breakMode : Integer } } ) : Text
.getText( { charSetNum : Integer { ; breakMode : Integer } } ) : Text
Paramètres | Type | Description | |
---|---|---|---|
charSetName | Text | -> | Nom du jeu de caractères |
charSetNum | Integer | -> | Numéro du jeu de caractères |
breakMode | Integer | -> | Mode de traitement des retours à la ligne |
Résultat | Text | <- | 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 :
Constante | Valeur | Commentaire |
---|---|---|
Document unchanged | 0 | Aucun traitement |
Document with native format | 1 | (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 CRLF | 2 | Les fins de ligne sont convertis au format Windows : CRLF (carriage return + line feed) |
Document with CR | 3 | Les fins de ligne sont convertis au format OS X : CR (carriage return) |
Document with LF | 4 | Les 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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.isFile : Boolean
Description
La propriété .isFile
retourne toujours true pour un fichier.
Cette propriété est en lecture seule.
.isFolder
Historique
Release | Modifications |
---|---|
17 R5 | Ajout |
.isFolder : Boolean
Description
La propriété .isFolder
retourne toujours false pour un fichier.
Cette propriété est en lecture seule.
.isWritable
Historique
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.File
Paramètres | Type | Description | |
---|---|---|---|
dossierDestination | 4D.Folder | -> | Dossier de destination |
nouveauNom | Text | -> | Nom complet du fichier déplacé |
Résultat | 4D.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
19 R7 | Ajout |
.open( { mode : Text } ) : 4D.FileHandle
.open( { options : Object } ) : 4D.FileHandle
Paramètres | Type | Description | |
---|---|---|---|
mode | Text | -> | Mode d'ouverture : "read", "write", "append" |
options | Object | -> | Options d'ouverture |
Résultat | 4D.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 :
mode | Description |
---|---|
"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) :
options | Type | Description | Par défaut |
---|---|---|---|
.mode | Text | Mode d'ouverture (voir mode ci-dessus) | "read" |
.charset | Text | Jeu 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" |
.breakModeRead | Text ou numérique | Mode de traitement des sauts de ligne utilisés lors de la lecture du fichier (voir ci-dessous) | "native" ou 1 |
.breakModeWrite | Text ou numérique | Mode 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 texte | Break 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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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
Release | Modifications |
---|---|
17 R5 | Ajout |
.rename( newName : Text ) : 4D.File
Paramètres | Type | Description | |
---|---|---|---|
nouveauNom | Text | -> | Nouveau nom complet du fichier |
Résultat | 4D.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
Release | Modifications |
---|---|
20 | Prise en charge de WinIcon |
19 | Ajout |
.setAppInfo( info : Object )
Paramètres | Type | Description | |
---|---|---|---|
info | Object | -> | 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é | Type | Commentaire |
---|---|---|
InternalName | Text | |
ProductName | Text | |
CompanyName | Text | |
LegalCopyright | Text | |
ProductVersion | Text | |
FileDescription | Text | |
FileVersion | Text | |
OriginalFilename | Text | |
WinIcon | Text | Chemin 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
.setContent()
Historique
Release | Modifications |
---|---|
17 R5 | Ajout |
.setContent ( content : Blob )
Paramètres | Type | Description | |
---|---|---|---|
content | BLOB | -> | 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
Release | Modifications |
---|---|
19 R3 | Par défaut pour les nouveaux projets : pas de BOM et (macOS) LF comme saut de ligne |
17 R5 | Ajout |
.setText ( text : Text {; charSetName : Text { ; breakMode : Integer } } )
.setText ( text : Text {; charSetNum : Integer { ; breakMode : Integer } } )
Paramètres | Type | Description | |
---|---|---|---|
text | Text | -> | Texte à stocker dans le fichier |
charSetName | Text | -> | Nom du jeu de caractères |
charSetNum | Integer | -> | Numéro du jeu de caractères |
breakMode | Integer | -> | 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 :
Constante | Valeur | Commentaire |
---|---|---|
Document unchanged | 0 | Aucun traitement |
Document with native format | 1 | (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 CRLF | 2 | Les fins de ligne sont converties en CRLF (retour chariot + saut de ligne), le format par défaut de Windows |
Document with CR | 3 | Les fins de ligne sont converties en CR (retour chariot), le format MacOS classique par défaut |
Document with LF | 4 | Les 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
Release | Modifications |
---|---|
17 R5 | Ajout |
.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.