코틀린을 조금씩 배우고 있습니다. 코틀린보다 자바가 아직은 더 편하지만 익숙해지면 구현 속도가 빨라질 것 같아서 배우고 있습니다. 간단히 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