You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用expo-file-system正确判断文件是否存在?

Expo FileSystem 文件存在性校验失效解决方案

问题根因

  • 异步逻辑混用await和then链式调用,写法不规范可能导致返回值时序异常
  • 未传入getInfoAsync的校验配置项,默认逻辑对部分未归一化路径的存在性判断会出现误判
  • 未排除同名目录的干扰:如果对应路径下存在和目标文件同名的目录,exists字段也会返回true,不符合文件校验的需求

正确实现代码

import * as FileSystem from 'expo-file-system';

const targetUri = 'file:///data/user/0/host.exp.exponent/files/ExperienceData/UNVERIFIED-192.168.0.66-CPEX-Force/2021-09-05.doc';

try {
  // 传入normalize参数对路径做归一化处理,保证存在性判断准确
  const response = await FileSystem.getInfoAsync(targetUri, { normalize: true });
  // 同时校验路径存在、且不是目录,才判定为目标文件存在
  const isTargetFileExist = response.exists && !response.isDirectory;

  if (isTargetFileExist) {
    // 文件存在,执行对应逻辑
  } else {
    // 文件不存在,执行后续逻辑
  }
} catch (err) {
  // 路径非法、无读写权限等异常场景,统一按文件不存在处理
  console.error('文件校验失败:', err);
}

注意事项

  • 确保App已申请对应存储目录的读写权限,Android 11及以上版本的分区存储规则会影响私有目录外的路径校验结果
  • 如果目标路径是动态获取的,先做非空和格式校验再传入方法,避免空值或非法路径导致的误判

内容的提问来源于stack exchange,提问作者João Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:24:04