KT-57298 createParentDirectories: handle already existing directory symlink

This commit is contained in:
Ilya Gorbunov
2023-03-27 05:29:14 +02:00
committed by Space Team
parent 912b65060e
commit f8d001c21f
2 changed files with 20 additions and 2 deletions
@@ -562,8 +562,16 @@ public inline fun Path.createDirectories(vararg attributes: FileAttribute<*>): P
*/
@SinceKotlin("1.9")
@Throws(IOException::class)
public fun Path.createParentDirectories(vararg attributes: FileAttribute<*>): Path =
this.apply { parent?.createDirectories(*attributes) }
public fun Path.createParentDirectories(vararg attributes: FileAttribute<*>): Path = also {
val parent = it.parent
if (parent != null && !parent.isDirectory()) {
try {
parent.createDirectories(*attributes)
} catch (e: FileAlreadyExistsException) {
if (!parent.isDirectory()) throw e
}
}
}
/**
* Moves or renames the file located by this path to the [target] path.