我正在使用react-native构建应用程序,并且尝试使用react-native-fs模块列出位于app文件夹中的一系列图像。这些图像位于应用程序项目文件夹中名为“数据”的文件夹中,因此例如,如果我要显示其中一张图像,则可以执行以下操作:
<Image source={require('./data/boo.png')} />
但是,当我尝试使用react-native-fs列出该文件夹中的所有文件时,像这样:
RNFS.readdir(RNFS.DocumentDirectoryPath+'/data')
.then((result) => {
console.log('GOT RESULT', result);
})
.catch((err) => {
console.log(err.message, err.code);
});
我收到错误“文件夹不存在”。同样,当我删除+'/ data'时,列出的唯一结果是名称为'ReactNativeDevBundle.js'的文件,其路径为'/data/user/0/com.awesomeproject/files/ReactNativeDevBundle.js'。这是预期的行为吗?如果这是预期的行为,而我做错了什么,如何从应用程序内访问所需的文件夹?附带的问题是,如果我想为Image标签提供绝对路径,那会是什么样子。
答案 0 :(得分:1)
首先,您要在运行时创建数据文件夹吗?还是为什么您认为那是文件所在的地方?
第二,
此外,当我删除+'/ data'时,列出的唯一结果是文件 “ ReactNativeDevBundle.js”的名称,路径为 /data/user/0/com.awesomeproject/files/ReactNativeDevBundle.js”。是 这是预期的行为吗?
是的,这是预期的行为,RNFS.DocumentDirectoryPath直接转到/data/user/0/com.awesomeproject/files/,如果要继续使用相同的代码,则应在此处创建数据文件夹目前有
编辑: 根据包装的其中一名提供者:if your folder is within the javascript-space this package won't work。
If you're using android, you may need to put the files into the assets-folder within the android-folder.然后,您应该可以使用readDirAssets。
我建议阅读Differences between File Source
节选:
普通文件:这些文件是由您的应用使用fs或fetch API创建的,您可以对这些文件进行任何操作。
资产文件:编译到应用程序捆绑包中,因此通常它们处于启用状态 只读模式