所以我有一堆文本檔案,我需要閱讀并列印到文本視圖的內容。我目前正在使用 .list() (java.io.File) 來獲取給定目錄中的檔案串列(它輸出檔案名字串陣列)。然后我遍歷陣列并一一讀取內容。
問題是,我需要按字母順序對檔案進行排序(檔案是日志,我需要首先顯示最新的日志 - 檔案名是時間戳 - (例如 20220414221311) - YYYYMMDDHHMMSS)。
.list 函式似乎是隨機排序的。
我曾嘗試將名稱放入串列中,然后對其進行排序,但它不起作用。任何人都可以幫忙嗎?
這是沒有任何排序的代碼:
fun ui() {
setContentView(R.layout.activity_main)
val dir = getExternalFilesDir(null);
val attendancedir = File("$dir/attendance")
var attendancelist = attendancedir.list()
val scroll = findViewById<View>(R.id.SCROLL) as LinearLayout
for (attendancefile in attendancelist) {
val attendancedisplay = File("$dir/attendance/$attendancefile")
val tv = TextView(this)
tv.text = attendancedisplay.readText()
scroll.addView(tv)
}
uj5u.com熱心網友回復:
如果您需要按字母順序對串列進行排序,可以使用 Kotlin 運算子 sortWith 和 compareTo。它應該看起來像:
attendancelist.sortWith { text1, text2 ->
text1.compareTo(text2, ignoreCase = true)
}
但是,如果您需要根據時間戳 'YYYYMMDDHHMMSS' 的排序串列,我可以建議接下來的步驟:
- 將您的字串串列轉換為日期串列。
- 排序日期串列。
- 將日期串列轉換回字串串列(或操作日期串列)。
下一個代碼示例:
private val sdf = SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault())
private fun ui() {
val dir = getExternalFilesDir(null);
val attendancedir = File("$dir/attendance")
val attendancelist = attendancedir.list()
val sortedList = getSortedList(attendancelist)
// do operations with sortedList
}
private fun getSortedList(attendancelist: Array<out String>): List<String?> {
return attendancelist.map { text -> // convert your string list to date list
sdf.parse(text)
}.sortedWith { date1, date2 -> // sort date list
date1.compareTo(date2)
}.map { date -> // convert date list back to string list
date?.let { sdf.format(it) }
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/458915.html
下一篇:洗掉Python中的所有空字符
