import fs from '@ohos.file.fs'; //列出资源管理器指定目录下的所有问题件 export function HilogSadboxFontDirFile(ctx: Context,dirName:string){ try { // 获取资源管理器 const rm = ctx?.filesDir+'/'+dirName+'/'; let fsl:Array=fs.listFileSync(rm); console.info('沙箱文件信息'); // 打印成功日志 console.info('目录路径:'+rm); // 打印成功日志 console.log('指定目录文件数: ' + fsl.length) // 打印文件数量 // 遍历打印所有文件名到控制台 for (let i = 0; i < fsl.length; i++) { console.log('文件名:', fsl[i]); } }catch (err) { let msg = 'Unknown error'; if (err instanceof Error) { msg = err.message; } else if (typeof err === 'string') { msg = err; } console.error(`list file failed with error message: ${msg}, error code: ${err.code}`); } } export function CheckExistDir(ctx: Context,dir:string):boolean{ if (!dir || typeof dir !== 'string') { console.error('Invalid directory path provided.'); return false; } try { //路径目录不存在 if(!fs.accessSync(dir)){ return false; } const stat = fs.statSync(dir); if (stat&&stat.isDirectory()) { console.info(`Directory exists: ${dir}`); return true; } else { console.info(`Path exists but is not a directory: ${dir}`); return false; } } catch (error) { // fs.stat 如果路径不存在会抛出错误 const businessError = error as BusinessError; if (businessError.code === 101) { // 错误码 101 通常代表文件或目录不存在,请根据实际文档确认 console.info(`Directory does not exist: ${dir}`); } else { // 其他错误,如权限不足等 console.error(`Error checking directory existence: ${businessError.message}, code: ${businessError.code}`); } return false; // 发生错误,视为目录不存在或无法访问 } } //复制字体到沙盒指定目录 //SandBoxFontDir:"/data/storage/el2/base/haps/entry/files/fonts" export function ExtractDir(ctx: Context,dirName:string):boolean{ //err->true表示复制成功 //err->表示复制失败 try { //初始化源Fonts目录和沙箱Fonts目录路径 let srcDir = ctx?.resourceDir+ '/'+dirName+'/'; let destDir = ctx?.filesDir + '/'+dirName+'/'; //检测目录是否存在 let srcDirState:boolean=CheckExistDir(ctx,srcDir); let destDirState:boolean=CheckExistDir(ctx,destDir); //源字体目录不存在则返回.->直接无法系统 if(!srcDirState){ return false; } //如果沙箱目录不存在则创建目录 if(!destDirState){ fs.mkdirSync(destDir); console.info('Created sandbox directory successfully:', destDir); }else{ return true; } ExtractFile(ctx,srcDir,destDir); console.info('Copy dir to sandbox successfully.'); return true; } catch (err) { let msg = 'Unknown error'; if (err instanceof Error) { msg = err.message; } else if (typeof err === 'string') { msg = err; } console.error(`Copy dir failed: ${msg}, error code: ${err.code}`); return false; } } export function ExtractFile(ctx: Context,srcDir:string,destDir:string){ try { //获取srcDir目录下所有文件, let fsl:Array=fs.listFileSync(srcDir); for (let i = 0; i < fsl.length; i++) { console.log('文件名:', fsl[i]); let srcFile=srcDir+fsl[i]; let destFile=destDir+fsl[i]; fs.copyFileSync(srcFile, destFile); } }catch (err) { let msg = 'Unknown error'; if (err instanceof Error) { msg = err.message; } else if (typeof err === 'string') { msg = err; } console.error(`Copy file failed: ${msg}, error code: ${err.code}`); } }