android file 资源,Android如何获取文件列表

该博客讨论了在Android中遍历文件目录时可能遇到的权限问题。由于Android的安全机制,某些子目录可能由于权限设置无法列出其内容。文章提供了一个示例代码,展示如何在遍历文件时检查是否有权限访问,以及如何处理返回NULL的情况。通过检查`listFiles()`返回的文件数组是否为空,可以判断文件夹是否可访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

package net.nowamagic.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 getMusicListOnSys(File file) {

//从根目录开始扫描

Log.i(TAG, file.getPath());

HashMap fileList = new HashMap();

getFileList(file, fileList);

return fileList;

}

/**

* @param path

* @param fileList

* 注意的是并不是所有的文件夹都可以进行读取的,权限问题

*/

private void getFileList(File path, HashMap 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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值