HOME > kotlin > examples

Android에서 코틀린으로 쉽게 파일을 탐색하는 방법

JSFollow22 May 2018

코틀린을 조금씩 배우고 있습니다. 코틀린보다 자바가 아직은 더 편하지만 익숙해지면 구현 속도가 빨라질 것 같아서 배우고 있습니다. 간단히 Android의 External stroage 안에 epub 파일을 찾는 코드를 구현하려고 하는데 간단한 코드가 있어서 정리해보았습니다.

코드를 보면 아시겠지만 File("path").walk().forEach로 recursive하게 모든 file을 탐색합니다. Filtering 조건을 걸어 원하는 파일을 찾을 수 있습니다. (외부 저장소에 접근하기 위해 READEXTERNALSTORAGE 권한은 미리 요청해야 합니다.)

코드

private val EXTERNAL_STORAGE_PATH = Environment.getExternalStorageDirectory().toString()

fun findBooks() {
    doAsync {
        Log.d(TAG, "finding books: " + EXTERNAL_STORAGE_PATH)
        val books = ArrayList<String>()

        File(EXTERNAL_STORAGE_PATH).walk().forEach {
            if (it.extension.equals("epub")) {
                Log.d(TAG, it.absolutePath)
                books.add(it.absolutePath)
            }
        }
    }
}

로그

05-22 17:12:34.476 23636 24057 D BookFinder: finding books: /storage/emulated/0
05-22 17:12:35.756 23636 24057 D BookFinder: /storage/emulated/0/Books/MoonReader/Alice_ko.epub
05-22 17:12:35.757 23636 24057 D BookFinder: /storage/emulated/0/Books/data.fbreader.org/recommended/en/books/hpmor.epub
05-22 17:12:35.765 23636 24057 D BookFinder: /storage/emulated/0/Mantano/.metadata/storage/emulated/0/Books/MoonReader/Alice_ko.epub
05-22 17:12:35.771 23636 24057 D BookFinder: /storage/emulated/0/folioreader/adventures/adventures.epub
05-22 17:12:35.771 23636 24057 D BookFinder: /storage/emulated/0/folioreader/TheSilverChair/TheSilverChair.epub