android开发怎样获得文件夹中的所有文件

2022-03-21 科技 429阅读
    有的时候程序需要去对android的指定目录或者全局目录进行遍历获取其中的文件,但是获取文件的时候可能会遇到无法列出文件夹中的文件的问题,这就是出现的问题,对于某个子文件夹进行获取listFiles()的时候返回为NULL,也就是不允许列出文件夹中内容。
  这个是由于android中的安全机制的缘故,由于android继承了Linux系统的传统,对于某个特定的目录有用户的权限,一共分为三种--可读,可写,可执行;虽然说可以设置某个特定的目录的权限,但是对于目录里面的子目录和子文件都可以进行权限的设置,也就是说出了根目录权限之外,子目录本身的权限也决定了子目录可否访问,这一点需要清楚了解,所以在判断完了是否是目录之外,还需要在进行listFiles()获取File[]数据后判断获取的数组是否为空,如果为空的话,文件夹是不可访问的。样例代码如下:
  01packagenet.nowamagic.file;
  02importjava.io.File;
  03importjava.util.ArrayList;
  04importjava.util.HashMap;
  05importjava.util.Map;
  06importandroid.util.Log;
  07
  12publicclassFileScan{
  13
  14privatestaticfinalStringTAG="FileScan";
  15publicHashMapgetMusicListOnSys(Filefile){
  16
  17//从根目录开始扫描
  18Log.i(TAG,file.getPath());
  19HashMapfileList=newHashMap();
  20getFileList(file,fileList);
  21returnfileList;
  22}
  23
  24
  29privatevoidgetFileList(Filepath,HashMapfileList){
  30//如果是文件夹的话
  31if(path.isDirectory()){
  32//返回文件夹中有的数据
  33File[]files=path.listFiles();
  34//先判断下有没有权限,如果没有权限的话,就不执行了
  35if(null==files)
  36return;
  37
  38for(inti=0;i  39getFileList(files[i],fileList);
  40}
  41}
  42//如果是文件的话直接加入
  43else{
  44Log.i(TAG,path.getAbsolutePath());
  45//进行文件的处理
  46StringfilePath=path.getAbsolutePath();
  47//文件名
  48StringfileName=filePath.substring(filePath.lastIndexOf("/")+1);
  49//添加
  50fileList.put(fileName,filePath);
  51}
  52}
  53
  54}

  出处:http://www.nowamagic.net/librarys/veda/detail/1481
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com