react-native文件系统找不到应用程序文件

时间:2018-08-15 17:32:28

标签: react-native react-native-android react-native-fs

我正在使用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标签提供绝对路径,那会是什么样子。

1 个答案:

答案 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创建的,您可以对这些文件进行任何操作。

     

资产文件:编译到应用程序捆绑包中,因此通常它们处于启用状态   只读模式