zoukankan      html  css  js  c++  java
  • 文件选择器

    需求:

    根据文件类型显示系统文件列表

    工具类:

    import android.content.ContentResolver;
    import android.content.Context;
    import android.database.Cursor;
    import android.net.Uri;
    import android.provider.MediaStore.Files;
    import android.provider.MediaStore.Files.FileColumns;
    
    import com.xuehu365.xuehu.model.FileTypeDetail;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by Administrator on 2017/1/18.
     */
    public class MyFileUtils {
    
    
        public static List<FileTypeDetail> getSpecificTypeOfFile(Context context, String[] extension, String fileType) {
    
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            List<FileTypeDetail> list = new ArrayList<>();
            //从外存中获取
            Uri fileUri = Files.getContentUri("external");
            //筛选列,这里只筛选了:文件路径和不含后缀的文件名
            String[] projection = new String[]{
                    FileColumns.DATA,
                    FileColumns.TITLE,
                    FileColumns.DATE_MODIFIED,
                    FileColumns.SIZE
            };
            //构造筛选语句
            String selection = "";
            for (int i = 0; i < extension.length; i++) {
                if (i != 0) {
                    selection = selection + " OR ";
                }
                selection = selection + FileColumns.DATA + " LIKE '%" + extension[i] + "'";
            }
            //按时间递增顺序对结果进行排序;待会从后往前移动游标就可实现时间递减
            String sortOrder = FileColumns.DATE_MODIFIED;
            //获取内容解析器对象
            ContentResolver resolver = context.getContentResolver();
            //获取游标
            Cursor cursor = resolver.query(fileUri, projection, selection, null, sortOrder);
            if (cursor == null)
                return null;
            //游标从最后开始往前递减,以此实现时间递减顺序(最近访问的文件,优先显示)
            if (cursor.moveToLast()) {
                do {
                    //输出文件的完整路径
                    String path = cursor.getString(0);
                    String name = cursor.getString(0).substring(cursor.getString(0).lastIndexOf("/") + 1);
                    String time = format.format((new Long(cursor.getString(2))) * 1000);
                    String size = getSize(new Long(cursor.getString(3)));
                    FileTypeDetail detail = new FileTypeDetail(path, name, time, size, fileType);
                    list.add(detail);
                } while (cursor.moveToPrevious());
            }
            cursor.close();
            return list;
        }
    
        public static String getSize(long size) {
            long kb = size / 1024;
            if (kb > 0) {
                long m = kb / 1024;
                if (m > 0) {
                    return m + "M";
                } else {
                    return kb + "KB";
                }
            } else {
                return size + "B";
            }
        }
    }

    然后调用即可

    list = MyFileUtils.getSpecificTypeOfFile(MainActivity.this, new String[]{".doc", ".ppt"});
    adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);
    lv.setAdapter(adapter);

     

  • 相关阅读:
    61031145 ERROR
    插入IO寄存器和位置约束---lattice&diamond
    lattice简单时序报告---timing report
    自动化仿真模型的搭建---基于lattice DO文件和modelsim脚本
    IIC加载以及存在的问题---lattice XO3
    DUALBOOT(双启动) 调试
    jtag管脚复用---lattice LCMXO3
    flask学习笔记-10:留言板(三)
    #flask学习笔记-09:留言板(二)
    #flask学习笔记-08:留言板(一)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/6256061.html
Copyright © 2011-2022 走看看