180 lines
4.7 KiB
JavaScript
180 lines
4.7 KiB
JavaScript
// Quelques fonctions utiles créer ou lire les fichiers
|
|
const fs = require("fs-extra");
|
|
|
|
class ToolFile
|
|
{
|
|
// Reçoit un objet et l'enregistre dans un fichier sous forme de chaîne
|
|
static async createJSON(dir, file, obj)
|
|
{
|
|
try
|
|
{
|
|
let myFile=""+file;// "file" peut être un nombre = bug avec endsWith
|
|
myFile=(myFile.endsWith(".json")) ? myFile : myFile+".json";
|
|
const path=dir+"/"+myFile;
|
|
await fs.outputJson(path, obj);// créé récursivement les répertoires si besoin
|
|
return true;
|
|
}
|
|
catch (err)
|
|
{
|
|
console.error(err);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Reçoit du code HTML et l'enregistre dans un fichier
|
|
static async createHTML(dir, file, html)
|
|
{
|
|
try
|
|
{
|
|
let myFile=""+file;// "file" peut être un nombre = bug avec endsWith
|
|
myFile=(myFile.endsWith(".html")) ? myFile : myFile+".html";
|
|
const path=dir+"/"+myFile;
|
|
await fs.outputFile(path, html);// créé récursivement les répertoires si besoin
|
|
return true;
|
|
}
|
|
catch (err)
|
|
{
|
|
console.error(err);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Reçoit du code XML et l'enregistre dans un fichier (à mutualiser avec précédente)
|
|
static async createXML(dir, file, xml)
|
|
{
|
|
try
|
|
{
|
|
let myFile=""+file;// "file" peut être un nombre = bug avec endsWith
|
|
myFile=(myFile.endsWith(".xml")) ? myFile : myFile+".xml";
|
|
const path=dir+"/"+myFile;
|
|
await fs.outputFile(path, xml);// créé récursivement les répertoires si besoin
|
|
return true;
|
|
}
|
|
catch (err)
|
|
{
|
|
console.error(err);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Vérifie si un fichier existe dans un répertoire
|
|
static async checkIfFileExist(dir, file)
|
|
{
|
|
try
|
|
{
|
|
const path=dir+"/"+file;
|
|
const fileInfos=await fs.stat(path);
|
|
return true;
|
|
}
|
|
catch(e)
|
|
{
|
|
if (e.code !== 'ENOENT')
|
|
console.error(e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Retourne un objet à partir d'un json contenu dans un fichier
|
|
static async readJSON(dir, file)
|
|
{
|
|
try
|
|
{
|
|
let myFile=""+file;
|
|
myFile=(myFile.endsWith(".json")) ? myFile : myFile+".json";
|
|
const path=dir+"/"+myFile;
|
|
const obj=await fs.readJson(path);
|
|
return obj;
|
|
}
|
|
catch(e)
|
|
{
|
|
if (e.code !== 'ENOENT')
|
|
console.error(e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Suppprime un fichier json, si il existe
|
|
static async deleteJSON(dir, file)
|
|
{
|
|
try
|
|
{
|
|
let myFile=""+file;
|
|
myFile=(myFile.endsWith(".json")) ? myFile : myFile+".json";
|
|
const path=dir+"/"+myFile;
|
|
await fs.remove(path);
|
|
return true;
|
|
}
|
|
catch(e)
|
|
{
|
|
if (e.code !== 'ENOENT')
|
|
console.error(e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Suppprime un fichier si il existe
|
|
static async deleteFile(dir, file)
|
|
{
|
|
try
|
|
{
|
|
let myFile=""+file;
|
|
const path=dir+"/"+myFile;
|
|
await fs.remove(path);
|
|
return true;
|
|
}
|
|
catch(e)
|
|
{
|
|
if (e.code !== 'ENOENT')
|
|
console.error(e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
static async deleteOldFilesInDirectory(dir, expirationTime)
|
|
{
|
|
try
|
|
{
|
|
let path, fileInfos;
|
|
const files = await fs.readdir(dir);
|
|
for (let i in files)
|
|
{
|
|
path=dir+"/"+files[i];
|
|
fileInfos=await fs.stat(path);
|
|
if(fileInfos.isFile() && fileInfos.mtimeMs<expirationTime)
|
|
await fs.remove(path);
|
|
}
|
|
return true;
|
|
}
|
|
catch(e)
|
|
{
|
|
if (e.code !== 'ENOENT')
|
|
console.error(e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
static async deleteFilesInDirectory(dir, saveFiles)
|
|
{
|
|
try
|
|
{
|
|
let path, fileInfos;
|
|
const files = await fs.readdir(dir);
|
|
for (let i in files)
|
|
{
|
|
path=dir+"/"+files[i];
|
|
fileInfos=await fs.stat(path);
|
|
if(fileInfos.isFile() && saveFiles.indexOf(files[i])===-1)
|
|
await fs.remove(path);
|
|
}
|
|
return true;
|
|
}
|
|
catch(e)
|
|
{
|
|
if (e.code !== 'ENOENT')
|
|
console.error(e);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = ToolFile; |