当前位置: 移动技术网 > 移动技术>移动开发>Android > Android 实现文件夹排序功能的实例代码

Android 实现文件夹排序功能的实例代码

2019年08月02日  | 移动技术网移动技术  | 我要评论
按文件名排序 /** * 按文件名排序 * @param filepath */ public static arraylist&

按文件名排序

 /**
   * 按文件名排序
   * @param filepath
   */
  public static arraylist<string> orderbyname(string filepath) {
    arraylist<string> filenamelist = new arraylist<string>();
    file file = new file(filepath);
    file[] files = file.listfiles();
    list filelist = arrays.aslist(files);
    collections.sort(filelist, new comparator<file>() {
      @override
      public int compare(file o1, file o2) {
        if (o1.isdirectory() && o2.isfile())
          return -1;
        if (o1.isfile() && o2.isdirectory())
          return 1;
        return o1.getname().compareto(o2.getname());
      }
    });
    for (file file1 : files) {
      if (file1.isdirectory()) {
        filenamelist.add(file1.getname());
      }
    }
    return filenamelist;
  }

基于名称:

/**
   * 按文件名排序
   * @param filepath
   */
  public static arraylist<string> orderbyname(string filepath) {
    arraylist<string> filenamelist = new arraylist<string>();
    file file = new file(filepath);
    file[] files = file.listfiles();
    list filelist = arrays.aslist(files);
    collections.sort(filelist, new comparator<file>() {
      @override
      public int compare(file o1, file o2) {
        if (o1.isdirectory() && o2.isfile())
          return -1;
        if (o1.isfile() && o2.isdirectory())
          return 1;
        return o1.getname().compareto(o2.getname());
      }
    });
    for (file file1 : files) {
      if (file1.isdirectory()) {
        filenamelist.add(file1.getname());
      }
    }
    return filenamelist;
  }

基于最近修改时间:

/**
   * 按文件修改时间排序
   * @param filepath
   */
  public static arraylist<string> orderbydate(string filepath) {
    arraylist<string> filenamelist = new arraylist<string>();
    file file = new file(filepath);
    file[] files = file.listfiles();
    arrays.sort(files, new comparator<file>() {
      public int compare(file f1, file f2) {
        long diff = f1.lastmodified() - f2.lastmodified();
        if (diff > 0)
          return 1;
        else if (diff == 0)
          return 0;
        else
          return -1;// 如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减
      }
      public boolean equals(object obj) {
        return true;
      }
    });
    for (file file1 : files) {
      if (file1.isdirectory()) {
        filenamelist.add(file1.getname());
      }
    }
    return filenamelist;
  }

基于大小:

/**
   * 按文件大小排序
   * @param filepath
   */
  public static arraylist<string> orderbysize(string filepath) {
    arraylist<string> filenamelist = new arraylist<string>();
    file file = new file(filepath);
    file[] files = file.listfiles();
    list<file> filelist = arrays.aslist(files);
    collections.sort(filelist, new comparator<file>() {
      public int compare(file f1, file f2) {
        long s1 = getfoldersize(f1);
        long s2 = getfoldersize(f2);
        long diff = s1 - s2;
        if (diff > 0)
          return 1;
        else if (diff == 0)
          return 0;
        else
          return -1;// 如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减
      }
      public boolean equals(object obj) {
        return true;
      }
    });
    for (file file1 : files) {
      if (file1.isdirectory()) {
        filenamelist.add(file1.getname());
      }
    }
    return filenamelist;
  }
  /**
   * 获取文件夹大小
   * @param file file实例
   * @return long
   */
  public static long getfoldersize(file file) {
    long size = 0;
    try {
      java.io.file[] filelist = file.listfiles();
      for (int i = 0; i < filelist.length; i++) {
        if (filelist[i].isdirectory()) {
          size = size + getfoldersize(filelist[i]);
        } else {
          size = size + filelist[i].length();
        }
      }
    } catch (exception e) {
      e.printstacktrace();
    }
    return size;
  }

总结

以上所述是小编给大家介绍的android 实现文件夹排序功能的实例代码,希望对大家有所帮助

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网