diff --git a/app/src/main/java/com/coldmint/rust/pro/FileSort.java b/app/src/main/java/com/coldmint/rust/pro/FileSort.java deleted file mode 100644 index 563a1c9..0000000 --- a/app/src/main/java/com/coldmint/rust/pro/FileSort.java +++ /dev/null @@ -1,131 +0,0 @@ -import java.io.File; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -public class FileSort { - final int name=0,time=1,size=2,type=3; - public static String[] type_list; - public FileSort(List a,int manner){ - switch (manner){ - case name: - sort_name(a); - break; - case time: - sort_time(a); - break; - case size: - sort_size(a); - break; - case type: - sort_type(a); - break; - default: - } - } - public static void sort_front(List a){ - Collections.sort(a, new Comparator() { - @Override - public int compare(File o1, File o2) { - if (o1.isDirectory() && o2.isFile()) - return -1; - if (o1.isFile() && o2.isDirectory()) - return 1; - return 0; - } - }); - } - - public static void sort_name(List a){ - Collections.sort(a,new Comparator() { - @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()); - } - }); - sort_front(a); - } - public static void sort_time(List a){ - Collections.sort(a,new Comparator() { - @Override - 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 排序就会是递减 - } - }); - sort_front(a); - } - - public void sort_size(List a){ - - Collections.sort(a, new Comparator() { - @Override - public int compare(File o1, File o2) { - long diff = o1.length() - o2.length(); - if (diff > 0) - return 1; - else if (diff == 0) - return 0; - else - return -1; - } - }); - sort_front(a); - } - public static void sort_type(List a){ - //文件类型排序 按照后缀优先级 -// System.out.println(type_list[0]); - Collections.sort(a, new Comparator() { - @Override - public int compare(File o1, File o2) { - if (o1.isFile()) { - String name_a = o1.getName(); - String o_z = name_a.substring(name_a.lastIndexOf(".")); -// System.out.println(o_z); - //获取 name_a文件名字的后缀 - int length=length(type_list,o_z); - System.out.println(length); - //查找后缀是不是存在于 type_list数据中 如果存在返回存在位置 如果不存在则返回<0的值 - if (length>=0) - return -1; - } else if (o2.isFile()) { - String name_a = o2.getName(); -// System.out.println(name_a); - String o_z = name_a.substring(name_a.lastIndexOf(".")); - - //获取 name_a文件名字的后缀 - int length=length(type_list,o_z); - if (length>=0) - return 1; - } - return 0; - } - }); - } - private static int length(String a){ - for (int i=0;i, manner: Int) { + val name = 0 + val time = 1 + val size = 2 + val type = 3 + //内置的类型排序筛选器数据 可以不用 但是类型排序必须要进行筛选才能正常排序 + init { + when (manner) { + name -> sort_name(a) + time -> sort_time(a) + size -> sort_size(a) + type -> sort_type(a) + } +// println(manner) + //一个内置的排序筛选器 也可以在外部调用 FileSort.sort_front(List a) 等静态的方法 + } + + companion object { + //0表示 名称排序 1表示 时间排序 2表示 大小排序 3表示类型排序 + lateinit var type_list: Array + + fun sort_front(a: MutableList) { + Collections.sort(a, kotlin.Comparator { o1, o2 -> + if (o1!!.isDirectory && o2!!.isFile) return@Comparator -1 + if (o1!!.isFile && o2!!.isDirectory) return@Comparator 1 + else return@Comparator 0 + }) + } + + //文件夹在前面的排序算法 每次sort_name等排序方法前后或者都会调研次方法 + fun sort_name(a: MutableList) { + Collections.sort(a, Comparator { o1, o2 -> + if (o1!!.isDirectory && o2!!.isFile) + return@Comparator -1 + if (o1.isFile && o2!!.isDirectory) + return@Comparator 1 + else o1.name.compareTo(o2!!.name) + return@Comparator 0 + }) + sort_front(a) + } + + fun sort_time(a: MutableList) { + Collections.sort(a, Comparator { f1, f2 -> + val diff = f1!!.lastModified() - f2!!.lastModified() + if (diff > 0) 1 else if (diff == 0L) 0 else -1 + //如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减 + }) + sort_front(a) + } + + fun sort_size(a: MutableList) { + Collections.sort(a, kotlin.Comparator { o1, o2 -> + val diff = o1!!.length() - o2!!.length() + if (diff > 0) 1 + else if (diff == 0L) 0 + else -1 + }) + sort_front(a) + } + + fun sort_type(a: MutableList) { + //文件类型排序 按照后缀优先级 + sort_front(a) + //先进行文件夹在前面的排序算法 + Collections.sort(a, Comparator { o1, o2 -> + if (o1!!.isFile) { + val name = o1.name + val suffix = name.substring(name.lastIndexOf(".")) + //获取name文件名字的后缀 + val length = length(type_list, suffix) + //查找后缀是不是存在于 type_list数据中 如果存在返回存在位置 如果不存在则返回<0的值 + if (length >= 0) return@Comparator -1 + } else if (o2!!.isFile) { + val name = o2.name + val suffix = name.substring(name.lastIndexOf(".")) + //获取name文件名字的后缀 + val length = length(type_list, suffix) + //查找后缀是不是存在于 type_list数据中 如果存在返回存在位置 如果不存在则返回<0的值 + if (length >= 0) return@Comparator 1 + } + 0 + }) + } + private fun length(sz: Array, a: String): Int { + //引入外部数据sz 去进行筛选让后返回位置 + for (i in sz.indices) { + if (sz[i] == a) { + return i + } + } + return -1 + } + } +} \ No newline at end of file