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

来源:互联网 发布:php 微信授权登录 编辑:程序博客网 时间:2024/05/17 06:31

现在有个需求就是,查询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;    }}
0 0