From 0302dd06f77f9eed09de84bbfd735bae35ed81ce Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 1 Jun 2015 18:38:21 +0300 Subject: [PATCH] Do not call mkdirs when destination file of copyTo doesn't have any parent directory. #KT-7888 Fixed --- libraries/stdlib/src/kotlin/io/files/Utils.kt | 2 +- libraries/stdlib/test/io/Files.kt | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) 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()