Kotlin / kotlinx-io

Kotlin multiplatform I/O library
Apache License 2.0
1.31k stars 59 forks source link

Singular createDirectory #280

Open mgroth0 opened 8 months ago

mgroth0 commented 8 months ago

There only exists createDirectories but not a singular createDirectory. A singular createDirectory operation has the beneficial feature of a built in assertion that the parent folder already exists. Currently, I work round this with something like:

fun FileSystem.createDirectory(path: Path, mustCreate: Boolean = true) {
    check(exists(path.parent!!))
    createDirectories(path,mustCreate=mustCreate)
}

This is not ideal becasuse the operation now involves two IO instructions, when I would expect this to be a single IO instruction.

Is there a technical reason why this is difficult to implement, or is it by design?

fzhinkin commented 8 months ago

No technical reasons not to have such a method (in fact, createDirectories creates directories one by one while climbing up parent paths chain). Current FS support was not properly designed, so it consists of some more or less randomly selected functions.