/**
* 获取目录所有文件
* @param dir目录
*/
private fun getDirAllFile(dir: String): List<File> {
val list: ArrayList<File> = ArrayList()
val toSearch: ArrayList<String> = ArrayList()
val map: HashMap<String,String> = HashMap()
toSearch.add(dir)
while (toSearch.size != 0) {
for (file in FileUtils.orderByDate(toSearch[0], false)) {
if (!file.isDirectory) {
if (!map.containsKey(file.name)) {
map.put(file.name,file.path)
}
} else {
toSearch.add(file.absolutePath)
}
}
if (toSearch.size != 0) {
toSearch.removeAt(0)
}
}
for (key: String in map.keys){
val file = map[key]
list.add(File(file))
}
return list
}
/**
* 按文件时间排序
*
* @param filePath ...
* @param desc 是否倒叙
* @return ...
*/
fun orderByDate(filePath: String?, desc: Boolean): Array<File?>? {
val file = File(filePath)
val fs = file.listFiles()!!
Arrays.sort(fs, object : Comparator<File?> {
override fun compare(f1: File?, f2: File?): Int {
val diff = f2?.lastModified()?.let { f1?.lastModified()?.minus(it) }
if (diff != null) {
return if (diff > 0) 1 else if (diff == 0L) 0 else -1
}
return -1
}
override fun equals(obj: Any?): Boolean {
return true
}
})
return if (desc) {
val nfs = arrayOfNulls<File>(fs.size)
for (i in fs.size - 1 downTo -1 + 1) {
nfs[fs.size - 1 - i] = fs[i]
}
nfs
} else {
fs
}
}
android获取目录下的所有文件,包含子目录里面的文件