今天研究Android中文件夹的文件的获取,有的时候我们的程序需要去对android的指定目录或者全局目录进行遍历获取其中的文件,但是获取文件的时候可能会遇到无法列出文件夹中的文件的问题,这就是我出现的问题,对于某个子文件夹进行获取listFiles()的时候返回为NULL,也就是不允许列出文件夹中内容。这个是由于android中的安全机制的缘故,由于android继承了Linux系统的传统,对于某个特定的目录有用户的权限,一共分为三种--可读,可写,可执行;虽然说我们可以设置某个特定的目录的权限,但是对于目录里面的子目录和子文件都可以进行权限的设置,也就是说出了根目录权限之外,子目录本身的权限也决定了子目录可否访问,这一点我们需要清楚了解,所以我们在判断完了是否是目录之外,我们还需要在进行listFiles()获取File[]数据后判断获取的数组是否为空,如果为空的话,文件夹是不可访问的。样例代码如下:

              package         com.zys.file;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import android.util.Log;


/**
*
@author
* function 用于扫描SD卡上的文件
*
*/
public class FileScan {

private static final String TAG = " FileScan " ;

public HashMap < String, String > getMusicListOnSys(File file) {

// 从根目录开始扫描
Log.i(TAG, file.getPath());
HashMap
< String, String > fileList = new HashMap < String, String > ();
getFileList(file, fileList);
return fileList;
}

/**
*
@param path
*
@param fileList
* 注意的是并不是所有的文件夹都可以进行读取的,权限问题
*/
private void getFileList(File path, HashMap < String, String > fileList){
// 如果是文件夹的话
if (path.isDirectory()){
// 返回文件夹中有的数据
File[] files = path.listFiles();
// 先判断下有没有权限,如果没有权限的话,就不执行了
if ( null == files)
return ;

for ( int i = 0 ; i < files.length; i ++ ){
getFileList(files[i], fileList);
}
}
// 如果是文件的话直接加入
else {
Log.i(TAG, path.getAbsolutePath());
// 进行文件的处理
String filePath = path.getAbsolutePath();
// 文件名
String fileName = filePath.substring(filePath.lastIndexOf( " / " ) + 1 );
// 添加
fileList.put(fileName, filePath);
}
}

}

更多相关文章

  1. 手机敲命令利器---Android(安卓)Terminal
  2. android 返回键与finish区别 onBackPressed
  3. Android的init过程详解(一)
  4. Android虚拟平台的编译和整合
  5. iOS开发-Android(安卓)录制的mp4视频文件在IOS中无法播放问题
  6. Android学习手记:第一个应用程序!
  7. Android(安卓)连接WIF获取的信息剖析
  8. Android/安卓存储优化
  9. PopupWindow的应用 2

随机推荐

  1. 关于百度地图只显示中间部分,显示不全的原
  2. (一)搭建android开发环境
  3. wzplayer for android V1.5 整合硬解码(
  4. Qt for Android 编译纯C工程
  5. Android多媒体编程从初学到精通
  6. 编程回忆之Android回忆(Android Socket编
  7. Android面试题(五)—— Android的消息机制
  8. Android学习经验B
  9. Android 调用js,传对象到js里面使用addJav
  10. 关于String是否为空的判断