/** * 获取目录对象或文件对象 * @param {string} url 要操作文件或目录的URL地址 * @returns {Promise} 若成功返回请求到的目录或文件对象,否则返回 null */ export function resolveFile(url) { return new Promise(resolve => { // #ifdef APP-PLUS plus.io.resolveLocalFileSystemURL(url, resolve, () => resolve(null)) // #endif // #ifndef APP-PLUS resolve(null) // #endif }) } /** * 获取目录大小 * @param {string} dir 目录地址 * @returns {Promise} 返回目录大小,单位字节 */ export function getDirSize(dir) { return new Promise(async resolve => { // #ifdef APP-PLUS const entry = await resolveFile(dir) if (!entry) return resolve(0) entry.getMetadata( res => resolve(res.size || 0), () => resolve(0), true ) // #endif // #ifndef APP-PLUS resolve(0) // #endif }) } /** * 删除目录 * @param {string} dir 目录地址 * @returns {Promise} 删除状态 */ export function removeDir(dir) { return new Promise(async resolve => { // #ifdef APP-PLUS const entry = await resolveFile(dir) if (!entry) return resolve(false) entry.removeRecursively( () => resolve(true), () => resolve(false) ) // #endif // #ifndef APP-PLUS resolve(false) // #endif }) } /** * 格式化字节大小 * @param {number} size 字节大小 * @returns {string} 格式化后的文字 */ export function formatSize(size) { const s = parseInt(size) if (s === 0) return '0B' else if (s < 1024) return s + 'B' else if (s < 1048576) return (s / 1024).toFixed(2) + 'KB' else if (s < 1073741824) return (s / 1048576).toFixed(2) + 'MB' else return (s / 1073741824).toFixed(2) + 'GB' }