现在有个需求就是,查询SD卡里以”.txt”结尾的所有文档,我们第一反应是用for循环遍历SD卡文件,然后把所有以txt后缀名结尾的文件路径放到一个集合里,但是这样有个缺点,,太慢了,android已经为我们提供查询特定格式的文件的方法,速度很快。
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()
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
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;
}
}
转载地址:http://blog.chinaunix.net/uid-20530497-id-2878069.html