본문 바로가기

Android/Function

[안드로이드] 특정 확장자의 파일 목록 불러와서 최신순, 이름순 정렬 하기

728x90
반응형
SMALL
//내부저장소 경로
private val mOutputDir = MyApplication.applicationContext().getExternalFilesDir(null)
companion object{
    const val COMPARETYPE_NAME = 0
    const val COMPARETYPE_DATE = 1
}
fun getFiles(): ArrayList<String>? {
	//.zip 확장자 파일목록 불러오기
    var fileArray = mOutputDir?.listFiles { pathname -> pathname.name.endsWith(".zip") }
    //최신순으로 정렬
    fileArray = fileArray?.let { sortFileList(it,COMPARETYPE_DATE) }

    //ArrayList로 저장 후 역순 정렬
    val fileArrayList: ArrayList<String> = ArrayList()
    if (fileArray != null) {
         for (file in fileArray) {
            fileArrayList.add(file.name)
         }
    }
    fileArrayList.reverse()
    return fileArrayList
 }
 private fun sortFileList(files: Array<File>, compareType:Int): Array<File>{
     Arrays.sort(files) { object1, object2 ->
         var s1 = ""
         var s2 = ""
          if (compareType == COMPARETYPE_NAME) { //이름순 정렬
                s1 = object1.name
                s2 = object2.name
          } else if (compareType == COMPARETYPE_DATE) { //날짜 순 정렬
                s1 = object1.lastModified().toString()
                s2 = object2.lastModified().toString()
          }
          s1.compareTo(s2)
     }

     return files
}

 

  • 참고자료

배열정렬(파일명,날짜)

728x90
반응형
LIST