获取存储在React Native

时间:2019-02-18 08:53:42

标签: android ios react-native react-native-fetch-blob

案例

我已将音频文件下载到名为/ tracks /的文件夹下的文档目录中,为:

RNFetchBlob.fs.dirs.DocumentDir + '/tracks/'

毫无疑问,我可以按名称来读取每个音频:

RNFetchBlob.fs.dirs.DocumentDir + '/tracks/' + 'audio1.mp3'

问题: 我想获取所有音频的列表。 我可以在File Access API中看到,我们可以读取文件,但是找不到从“ / tracks /”文件夹中获取音频文件列表的方法。

我只想在该目录中包含一个文件名数组。

文件访问API链接: https://github.com/wkh237/react-native-fetch-blob/wiki/File-System-Access-API#dirs

P.S:我不想去其他文件访问插件。 我不知道是否需要搜索其他库以获取文件列表。

更新

使用以下代码:

var TRACK_FOLDER = RNFetchBlob.fs.dirs.DocumentDir + '/tracks/';

console.log('Files LIST in Tracks Folder = ', RNFetchBlob.fs.ls(TRACK_FOLDER));

输出是:

Screenshot of Google console

我认为我已经接近了,但是输出似乎很难解析。 :(

最后:(这是完成的方式)

    var TRACK_FOLDER = RNFetchBlob.fs.dirs.DocumentDir + '/tracks/';

    console.log('Files list in TRACK_FOLDER = ', RNFetchBlob.fs.ls(TRACK_FOLDER));

     RNFetchBlob.fs.ls(TRACK_FOLDER)
    .then( (files) =>{ 
        console.log(files.length);  
        console.log(files); 
        console.log(files[0]); 

    })

输出: final output

希望这对外面的人有帮助。

1 个答案:

答案 0 :(得分:1)

RNFetchBlob.fs.ls返回一个承诺。

因此您可以使用.then/.catch

进行访问
RNFetchBlob.fs.ls(TRACK_FOLDER).then(files => {
  console.log(files);
}).catch(error => console.log(error))

或者您可以使用async/await

try {
  let files = await RNFetchBlob.fs.ls(TRACK_FOLDER);
  console.log(files);
} catch (error) {
  console.log(error);
}

您可以阅读有关RNFetchBlob.fs.ls here的更多信息。另请注意,RNFetchBlob的存储库已移至此处https://github.com/joltup/rn-fetch-blob