android - 获取存储在 React Native 文档目录中的文件名数组

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

案例

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

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

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

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

问题: 我想获取所有音频的列表。 我可以在文件访问 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

希望这对那里的人有帮助。

最佳答案

RNFetchBlob.fs.ls 返回一个 promise 。

因此您可以使用 .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

关于android - 获取存储在 React Native 文档目录中的文件名数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54743482/

相关文章:

ios - React Native 0.60.5 中未链接模块

react-native - ld : warning: directory not found for option with rn0. 60

当 Content-Type = application/octet-stream 时,Android 如何处理改造响应?

php - 使用 ASIFormDataRequest 将 UIImage 从 UIImagePickerController 发送到 PHP 服务器

ios - 如何读取存储在 NSUserDefaults 中的数组?

macos - 我可以在 docker 镜像中开发 react-native 应用吗

java - 如何在 Android 中使用多个数据库帮助程序类在 SQLite 中进行内部联接

android - GuidedStepFragment 是用于 Android Mobile 还是仅用于 Android TV?

java - 我真的无法阻止处理程序!我怎么能够?

ios - 难以理解 block 编程的这一部分