Skip to content

$file.toMemFile

Description

Dans Ewt, les objets de type file peuvent être stockés soit en tant que référence de fichier existant dans le filesystem, soit en tant que tableau de bytes existant purement en mémoire.

Dans le cas d'un fichier envoyé par formulaire, c'est la taille du fichier qui détermine de quelle façon le fichier est conservé (ce mécanisme est implémenté dans org.apache.FileUpload au travers de la classe DeferredFileOutputStream).

La méthode toMemFile permet de forcer le chargement en mémoire (c'est-à-dire en tant que tableau de bytes interne à l'objet file) du contenu d'un fichier dans le cas où celui-ci est un fichier physique.

Il n'est en principe pas nécessaire de faire ce genre d'opération dans un script normal, d'autant que le moteur se charge déjà de réaliser ce traitement lorsque cela est nécessaire, ce qui est le cas lorsqu'un fichier est conservé en tant qu'objet de session persistent. En effet, dans ce cas le fichier devra être accessible dans un thread ultérieur, mais le stockage en filesystem en permet pas de garantir que le fichier existera encore à ce moment (a fortiori si le fichier a été obtenu depuis un payload de requête, étant donné que ces derniers sont automatiquement nettoyés après traitement de la requête).

Syntaxe

$file.reencode( file, charsetIn , charsetOut )

Paramètres

file file / string
Fichier à convertir. Peut être passé sous forme de file ou au moyen de son path sous forme de string
charsetIn string
Charset du fichier à traiter
charsetOut string
Charset de sortie

Retour

Retourne true si l'opération a réussi, sinon false.

Exemple

Le script ci-dessous applique une conversion iso-8859-1 vers utf-8 récursivement sur l'ensemble des fichiers présents dans l'arborescence d'un dossier.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
function scan(dir) {
    for (var file: $file.list(dir)) {
        $logger.info(file);
        if ($file.isDirectory(file)) {
            scan(file);
        }
        else {
            $file.reencode(file, "iso-8859-1", "utf-8");
        }
    }
}

scan($file.load("/home/me/Documents/files"));