import { promises as fs } from "fs"; import { RJLog } from "./RJLog"; export class Files { static async getFiles( filePath:string ) { return await fs.readdir( filePath ); } static async copy( from:string, to:string ) { return await fs.copyFile( from, to ); } static async getFilesRecursive( filePath:string ) { let files = await fs.readdir( filePath, { recursive: true } ); return files; } static async delete( filePath:string ) { await fs.unlink( filePath ); return Promise.resolve(); } static async isDirectory( filePath:string ) { let stats = await fs.stat( filePath ); return stats.isDirectory(); } static async exists( filePath:string ) { try { let stats = await fs.stat( filePath ); let exists = stats !== undefined && stats !== null; return Promise.resolve( exists ); } catch( e ) { } return Promise.resolve( false ); } static async loadUTF8( filePath:string ):Promise { try { let data = await fs.readFile( filePath ); let stringData = data.toString(); return Promise.resolve( stringData ); } catch ( exception ) { RJLog.warn( "loadUTF8: ", filePath ); RJLog.warn( exception ); } return Promise.resolve( null ); } static async saveUTF8( filePath:string, data:string ) { try { await fs.writeFile( filePath, data ); return Promise.resolve( true ); } catch ( exception ) { RJLog.warn( "saveUTF8: ", filePath ); RJLog.warn( exception ); } return Promise.resolve( false ); } static async loadJSON( filePath:string ):Promise { let text = await this.loadUTF8( filePath ); if ( text === null ) { return Promise.resolve( null ) as T; } try { let jsonObject = JSON.parse( text ); return Promise.resolve( jsonObject ); } catch ( exception ) { RJLog.warn( "LoadJSON: ", filePath ); RJLog.warn( exception ); } return Promise.resolve( null ); } }