您的位置:首页 > 移动开发 > Android开发

Android查询扫描SD卡里指定后缀名称的文件

2016-07-11 10:30 357 查看
现在有个需求就是,查询SD卡里以”.txt”结尾的所有文档,我们第一反应是用for循环遍历SD卡文件,然后把所有以txt后缀名结尾的文件路径放到一个集合里,但是这样有个缺点,,太慢了,android已经为我们提供查询特定格式的文件的方法,速度很快。

/**
* 查询SD卡里可以上传的文档
*/
private void queryFiles(){
String[] projection = new String[] { MediaStore.Files.FileColumns._ID,
MediaStore.Files.FileColumns.DATA,
MediaStore.Files.FileColumns.SIZE
};
Cursor cursor = getContentResolver().query(
Uri.parse("content://media/external/file"),
projection,
MediaStore.Files.FileColumns.DATA + " like ?",
new String[]{"%.txt"},
null);

if (cursor != null) {
if (cursor.moveToFirst()) {

int idindex = cursor
.getColumnIndex(MediaStore.Files.FileColumns._ID);
int dataindex = cursor
.getColumnIndex(MediaStore.Files.FileColumns.DATA);
int sizeindex = cursor
.getColumnIndex(MediaStore.Files.FileColumns.SIZE);
do {
String id = cursor.getString(idindex);
String path = cursor.getString(dataindex);
String size = cursor.getString(sizeindex);
docBean.setId(id);
docBean.setPath(path);
docBean.setSize(size);
int dot=path.lastIndexOf("/");
String name=path.substring(dot+1);
Log.e("test",name);
} while (cursor.moveToNext());
}
}
cursor.close();
}


DocBean是个实体类,代码如下:

public class DocBean implements Serializable {
private String id;
private String path;
private String size;
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSize() {
return size;
}

public void setSize(String size) {
this.size = size;
}

public String getPath() {
return path;
}

public void setPath(String path) {
this.path = path;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 扫描SD卡