diff --git a/libraries/stdlib/src/kotlin/io/Files.kt b/libraries/stdlib/src/kotlin/io/Files.kt index 52b24387fab..8b46f8ccf76 100644 --- a/libraries/stdlib/src/kotlin/io/Files.kt +++ b/libraries/stdlib/src/kotlin/io/Files.kt @@ -202,3 +202,12 @@ fun File.readLines(charset : String = "UTF-8") : List { return rs } + +/** + * Returns an array of files and directories in the directory that satisfy the specified filter. + */ +fun File.listFiles(filter : (file : File) -> Boolean) : Array? = listFiles( + object : FileFilter { + override fun accept(file: File?) = filter(file!!) + } +) as Array? diff --git a/libraries/stdlib/test/IoTest.kt b/libraries/stdlib/test/IoTest.kt index 5d46da4571f..98591f67527 100644 --- a/libraries/stdlib/test/IoTest.kt +++ b/libraries/stdlib/test/IoTest.kt @@ -71,4 +71,19 @@ class IoTest() : TestCase() { assertEquals(arrayList("Hello", "World"), list) } + + fun testListFiles() { + val dir = File.createTempFile("temp", System.nanoTime().toString())!! + dir.delete() + dir.mkdir() + + File.createTempFile("temp", "1.kt", dir) + File.createTempFile("temp", "2.java", dir) + File.createTempFile("temp", "3.kt", dir) + + val result = dir.listFiles { it.getName()!!.endsWith(".kt") } + + assertNotNull(result) + assertEquals(result!!.size, 2) + } }