내부저장소 파일 리스트 이름순/최근수정일로 sort하기

Hue·2024년 1월 9일
0

Android/Kotlin

목록 보기
36/42

class FileComparator {
    companion object {
        const val COMPARETYPE_NAME = 0
        const val COMPARETYPE_DATE = 1
    }
    fun sortFiles(files: Array<File>, compareType: Int): Array<File> {

        files.sortWith(Comparator { obj1, obj2 ->
            var str1 = ""
            var str2 = ""

            when (compareType) {
                COMPARETYPE_NAME -> {
                    str1 = (obj1 as File).name
                    str2 = (obj2 as File).name
                }
                COMPARETYPE_DATE -> {
                    str1 = (obj1 as File).lastModified().toString()
                    str2 = (obj2 as File).lastModified().toString()
                }
            }

            str1.compareTo(str2)
        })

        return files
    }

}

미리 클래스로 작성해주고 필요한 곳에서 사용할 수 있도록 했다. (메소드만 만들어서 사용해도 무관)

		val path = "${Environment.getExternalStorageDirectory().absolutePath}/docs"
        val dir = File(path)
        var tempFiles = dir.listFiles{ pathname -> pathname.name.endsWith("_doc.csv")} ?: return
        tempFiles = FileComparator().sortFiles(tempFiles, FileComparator.COMPARETYPE_DATE)

사전에 저장해 놓을 파일 경로를 통해 File 객체를 만들고 listFiles()로 디렉토리의 파일리스트를 불러온다.
나의 경우 파일이 여러 종류가 저장되어있고 파일명 끝에 "_doc.csv"로 끝나는 파일만 걸러서 가져왔다.
사전에 만들어놓은 메소드를 이용하여 가져온 파일리스트를 최근수정일(COMPARETYPE_DATE)로 가져온다.




도움받은 곳
https://devbible.tistory.com/148

0개의 댓글