为啥 React Native RNFS 的 copyFile() 无法访问 iOS 上的现有文件?
Posted
技术标签:
【中文标题】为啥 React Native RNFS 的 copyFile() 无法访问 iOS 上的现有文件?【英文标题】:Why React Native RNFS's copyFile() cannot access to existing file on iOS?为什么 React Native RNFS 的 copyFile() 无法访问 iOS 上的现有文件? 【发布时间】:2019-12-31 01:16:09 【问题描述】:我正在尝试使用 RNFS 从“/Documents”文件夹(在 ios 模拟器上)访问和复制文件,但是虽然 .exists() 可以找到该文件,但 .copyFile() 将错误返回为“文件 'temp. jpg' 不存在”
为什么会发生这种情况?
这是我的源文件路径(我也可以使用图像组件访问它):
在路径中添加“file://”也不起作用。
/Users/myusername/Library/Developer/CoreSimulator/Devices/D305Z9A4-6C67-4DFE-A07D-1EF4D0302B87/data/Containers/Data/Application/B933EF45-391F-4882-986F-92B5430823D0/Documents/temp.jpg
这是我的代码 sn-p,newlyCroppedImagePath
是上面的路径。 exists() 返回正确的结果,但 .copyFile() 返回“不存在”
RNFS.exists(newlyCroppedImagePath)
.then((success) =>
console.log('File Exists!'); // <--- here RNFS can read the file and returns this
)
.catch((err) =>
console.log("Exists Error: " + err.message);
);
RNFS.copyFile(newlyCroppedImagePath, tmpFilePath)
.then((success) =>
console.log('file moved!');
)
.catch((err) =>
console.log("Error: " + err.message); // <--- but copyFile returns "doesn't exists" error for temp.jpg
);
【问题讨论】:
【参考方案1】:真正做到
RNFS.exists(newlyCroppedImagePath).then((success) =>
console.log('File Exists!'); // <--- here RNFS can read the file and returns this
)
不代表文件存在。
由于exists() 返回一个Promise,if 条件总是为真。
试试下面的
RNFS.exists(filePath).then((status)=>
if(status)
console.log('Yay! File exists')
else
console.log('File not exists')
)
另外,请使用 RNFS.readDir() 检查目录中的可用文件,以检查您的文件是否已呈现。
参考 https://github.com/itinance/react-native-fs#readdirdirpath-string-promisestring
【讨论】:
以上是关于为啥 React Native RNFS 的 copyFile() 无法访问 iOS 上的现有文件?的主要内容,如果未能解决你的问题,请参考以下文章
React Native saveToCameraRoll 在 Android 上因“权限被拒绝”错误而失败
为啥 npm install react-native 不起作用?
为啥我们不在 react-native 中 gitignore ios/ 和 android/
为啥我的代码不能在 web 中的 react-native 代码中运行
为啥 shadowColor: '...' - 不适用于“react-native-drawer”组件的 Android 上的抽屉样式?