0
votes

I would like to do some basic filesystem operations on mingwX64 Windows (and possibly other platforms): open, close, read, rename, get metadata, list files in a directory.

I have found one project that promises to implement this functionality: KotlinxIO. However, there has been no progress made in years.

Are there any other alternatives or workarounds?

4
why tag kotlin-multiplatform if you only want to use on Windows? - Alex.T

4 Answers

2
votes

You might want to look at OKIO. There is some multiplatform support, and a Windows target, but I don't know first hand if the filesystem portion is implemented on Windows: https://github.com/square/okio

2
votes

In the end, I used the library Korio. The documentation could be better, but all of the functionality I need is implemented for all platforms (Jvm, Desktop, Android, ..):

import com.soywiz.korio.file.std.*

suspend fun main {
  val cwd = localCurrentDirVfs
  val files = cwd.list()
  cwd["Hello.txt"].open().close()
  cwd["Hello.txt"].renameTo("Hi.txt")
  val metadata = cwd["Hi.txt"].stat()
}

On top of that, it allows usage of the same API for accessing online files, zip archives, etc. which is pretty neat.

1
votes

Unfortunately the only workaround right now is to use the expect/actual pattern https://kotlinlang.org/docs/mpp-connect-to-apis.html. Then you can use java.io for Android, Bundle for iOS etc depending on your target platform

0
votes

For windows you can just use standard libraries Java.io and Java.nio.