欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android基于名称、修改时间、大小实现文件夹排序

程序员文章站 2022-06-29 09:27:15
本文实例为大家分享了android实现文件夹排序的具体代码,供大家参考,具体内容如下 基于名称: /** * 按文件名排序 * @param filep...

本文实例为大家分享了android实现文件夹排序的具体代码,供大家参考,具体内容如下

基于名称:

/**
 * 按文件名排序
 * @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;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。