Expo FileSystem.getInfoAsync返回文件修改时间异常咨询
Expo FileSystem.getInfoAsync 返回相同 modificationTime 的问题解决
核心问题
你的getDirFileInformation函数循环逻辑存在错误:循环中始终调用list[0]获取文件信息,而非当前循环索引i对应的list[i]。这会导致每次请求的都是同一个文件的信息,自然所有文件的modificationTime输出完全一致。
修正方案
- 修复循环中的文件索引错误,将
list[0]改为list[i] - 规范
async/await写法,避免await与.then混用 - 修正
getInfoAsync中未使用合并后参数的问题
修正后的代码:
1. 修复getInfoAsync函数
export async function getInfoAsync(fileUri: string, options?: {}) { const opts: AllFileOptions = { size: true, ...options }; return await FileSystem.getInfoAsync(fileUri, opts); // 使用合并后的opts参数 }
2. 修复getDirFileInformation函数
export async function getDirFileInformation(path: string, list: string[]) { const dirInfoList = new Set<FileSystem.FileInfo>(); for (let i = 0; i < list.length; i++) { try { // 改用list[i]获取当前循环的文件 const rsp = await getInfoAsync(`${path}/${list[i]}`); if (rsp.exists) { dirInfoList.add(rsp); } } catch (err) { throw new Error(`getDirFileInformation: ${err}`); } } return dirInfoList; }
后续验证
修正后重新运行代码,控制台会输出每个日志文件的真实修改时间,你就可以基于modificationTime排序,找到最旧的文件执行删除逻辑。
内容的提问来源于stack exchange,提问作者JDev
相关产品推荐
相关产品推荐

