获取存储在 React Native 文档目录中的文件名数组
Get the array of filenames stored in document directory in React Native
案例
我已经将音频文件下载到名为 /tracks/ 的文件夹下的文档目录中:
RNFetchBlob.fs.dirs.DocumentDir + '/tracks/'
毫无疑问,我可以通过他们的名字阅读每个音频:
RNFetchBlob.fs.dirs.DocumentDir + '/tracks/' + 'audio1.mp3'
问题:
我想获取所有音频的列表。
我可以在文件访问 API 中看到,我们可以读取文件,但我无法找到如何从文件夹“/tracks/”中获取音频文件列表。
我只想在那个目录中有一个文件名数组。
文件访问 API link :
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));
输出是:
我想我已经接近了,但输出似乎难以解析。
:(
最后:(这是完成的方式)
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]);
})
输出:
希望这对那里的人有所帮助。
RNFetchBlob.fs.ls
returns一个承诺。
因此您可以使用 .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. Also note that the repository for RNFetchBlob has moved to here https://github.com/joltup/rn-fetch-blob
我使用了 lstat,其中 returns 所有文件都包含以下内容:
{
filename: "RNPM_2238640396305543067.png"
lastModified: "1632219571000"
path: "/data/user/0/com.test.app/cache/RNPM_2238640396305543067.png"
size: "21059"
type: "file"
}
案例
我已经将音频文件下载到名为 /tracks/ 的文件夹下的文档目录中:
RNFetchBlob.fs.dirs.DocumentDir + '/tracks/'
毫无疑问,我可以通过他们的名字阅读每个音频:
RNFetchBlob.fs.dirs.DocumentDir + '/tracks/' + 'audio1.mp3'
问题: 我想获取所有音频的列表。 我可以在文件访问 API 中看到,我们可以读取文件,但我无法找到如何从文件夹“/tracks/”中获取音频文件列表。
我只想在那个目录中有一个文件名数组。
文件访问 API link : 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));
输出是:
我想我已经接近了,但输出似乎难以解析。 :(
最后:(这是完成的方式)
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]);
})
输出:
希望这对那里的人有所帮助。
RNFetchBlob.fs.ls
returns一个承诺。
因此您可以使用 .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. Also note that the repository for RNFetchBlob has moved to here https://github.com/joltup/rn-fetch-blob
我使用了 lstat,其中 returns 所有文件都包含以下内容:
{
filename: "RNPM_2238640396305543067.png"
lastModified: "1632219571000"
path: "/data/user/0/com.test.app/cache/RNPM_2238640396305543067.png"
size: "21059"
type: "file"
}