android 接受特定格式文件夹,android应用 获取本地指定类型文件 的两种最优方法...

注意部分:

通过 Intent.ACTION_MEDIA_MOUNTED 进行全扫描

通过 Intent.ACTION_MEDIA_SCANNER_SCAN_FILE 扫描某个文件

上述方法是不支持对文件夹的 即:Uri data 必须是 文件的Uri 如果是文件夹的 其不会起作用的 切记!

方法二 直接查找

这种方法是最原始的方法,通过获取文件目录递归来查询文件

正面是主要实现:/*** 获取指定位置的指定类型的文件

*

*@parampath

*

文件夹路径

*@paramtype

*

文件类型(如“*.jpg;*.png;*.gif”)

*getFileList(String path, String type,finalOnFileListCallback onFileListCallback) {new AsyncTask() {

ArrayList list = new ArrayList();

@Overrideprotected voidonPostExecute(String result) {

onFileListCallback.SearchFileListInfo(list);

}

@OverrideprotectedString doInBackground(String… params) {//TODO Auto-generated method stub

String path= params[1].substring(params[1]

.lastIndexOf(“.”)+ 1);

File file= new File(params[0]);

scanSDCard(file,path,list);return null;

}

}.execute(path, type, “”);

}/*** 扫描完成后的回调,获取文件列表必须实现

*

*@authorcola

*OnFileListCallback {/*** 返回查询的文件列表

*@paramlist 文件列表SearchFileListInfo(Listlist);

}scanSDCard(File file, String ext, ArrayListlist) {if(file.isDirectory()) {

File[] files=file.listFiles();if (files != null) {for (int i = 0; i < files.length; i++) {

File tmp=files[i];if(tmp.isFile()) {

String fileName=tmp.getName();

String filePath=tmp.getName();if (fileName.indexOf(“.”) >= 0) {

fileName=fileName.substring(fileName

.lastIndexOf(“.”)+ 1);if (ext != null &&ext.equalsIgnoreCase(fileName)) {

AspLog.i(TAG, filePath);

FileInfo info= newFileInfo();

info.fileName=filePath;

info.filePath=tmp.getAbsolutePath();

list.add(info);

}

}

}elsescanSDCard(tmp, ext, list);

}

}

}else{if(file.isFile()) {

String fileName=file.getName();

String filePath=file.getName();if (fileName.indexOf(“.”) >= 0) {

fileName=fileName

.substring(fileName.lastIndexOf(“.”)+ 1);if (ext != null &&ext.equalsIgnoreCase(fileName)) {

AspLog.i(TAG, filePath);

FileInfo info= newFileInfo();

info.fileName=filePath;

info.filePath=file.getAbsolutePath();

list.add(info);

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值