react-native-fs 遍历本地文件Android测试

import React,{Component} from 'react';

import {View,Text,StyleSheet,Button,Alert} from 'react-native';

const f=require("react-native-fs");

export default class Fs extends Component{

constructor(props){

super(props);

this.data=[];//遍历结果

this.filecache=[];//缓存遍历过程中的文件夹

this.len=0;//缓存遍历过后的文件数量

this.states='';//当前遍历的文件夹路径

this.state={s:false};//刷新视图

}

async dir(path){//调用入口

if(path==""){return };

let data=await this.rd(path);

var reg=/.*?\.mp3$/i;//需要遍历的文件后缀名

for(let x=0,l=data.length;x<l;x++){

if(data[x].isDirectory()){

this.filecache.push(data[x].path);//是目录就缓存起来下次遍历  

//不在这里使用递归是避免程序崩溃 测试过会造成程序卡死

}else if(data[x].isFile()&&reg.test(data[x].name)){

this.data.push(data[x]);//是需要的文件就保存起来

//data[x] 包含name文件名 path绝对路径 size文件大小 ctime 创建时间 ..............

}

}

this.Directory();//继续扫描缓存中的目录

}

rd(path){//封装RNFS

return new Promise((resolve,reject)=>{

return f.readDir(path).then(data=>{

resolve(data)

}).catch(e=>{reject(e)})

})

}

async pr(path){//用于直接获取promise的结果

return await this.rd(path);

}

Directory(){// this.dir 回调继续扫描

if(this.filecache.length>0){

let x=this.filecache[0];//第一个缓存目录路径

this.filecache.shift();//去掉第一个缓存目录

this.setData(x);//视图显示

this.dir(x);//回调

return ;

}else{

this.setData('扫描完成');

return false;}

}

setData(path){//反馈给用户的结果

this.states=path.replace(/\/storage\/emulated\/0/ig,'');

this.len=this.data.length;

this.setState({s:!this.state.s})

}

render(){

return (

<View>

<Button style={styles.bt} onPress={()=>{this.data=[];this.dir('/storage/emulated/0')}} title='扫描本地文件'/>

<Text>  </Text>

<Button style={styles.bt} onPress={()=>{this.filecache=[]}} title='停止扫描' />

<Text>ScanFile:{this.states}</Text>

<Text>  </Text>

<Text >共扫描出 <Text style={{color:'green'}}>{this.len}</Text> 个MP3文件</Text>

</View>

);

}

}

const styles=StyleSheet.create({

bt:{width:50,height:30,fontSize:20,color:'#ff0000'},

});



//第一次写有点粗糙 大家将就着看  

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容