diff --git a/libraries/stdlib/src/kotlin/io/files/Utils.kt b/libraries/stdlib/src/kotlin/io/files/Utils.kt index c3f4287249d..74b8c8b7a74 100644 --- a/libraries/stdlib/src/kotlin/io/files/Utils.kt +++ b/libraries/stdlib/src/kotlin/io/files/Utils.kt @@ -218,7 +218,7 @@ public fun File.copyTo(dst: File, overwrite: Boolean = false, bufferSize: Int = return copyTo(dst.resolve(name), overwrite, bufferSize) } } - dst.getParentFile().mkdirs() + dst.getParentFile()?.mkdirs() dst.delete() val input = FileInputStream(this) return input.use { diff --git a/libraries/stdlib/test/io/Files.kt b/libraries/stdlib/test/io/Files.kt index c4b0754a1c0..b1ea3a0ea1f 100644 --- a/libraries/stdlib/test/io/Files.kt +++ b/libraries/stdlib/test/io/Files.kt @@ -780,6 +780,26 @@ class FilesTest { srcFile.delete() } + test fun copyToNameWithoutParent() { + val currentDir = File("").getAbsoluteFile()!! + val srcFile = createTempFile() + val dstFile = createTempFile(directory = currentDir) + try { + srcFile.writeText("Hello, World!", "UTF8") + dstFile.delete() + + val dstRelative = File(dstFile.name) + + srcFile.copyTo(dstRelative) + + assertEquals(srcFile.readText(), dstFile.readText()) + } + finally { + dstFile.delete() + srcFile.delete() + } + } + test fun deleteRecursively() { val dir = createTempDir() dir.delete()