使用 Kotlin 多平台的文件 IO

File IO with Kotlin multiplatform

我想在 mingwX64 Windows(可能还有其他平台)上做一些基本的文件系统操作:打开、关闭、读取、重命名、获取元数据、列出目录中的文件。

我找到了一个承诺实现此功能的项目:KotlinxIO。然而,多年来一直没有任何进展。

还有其他替代方法或解决方法吗?

不幸的是,目前唯一的解决方法是使用 expect/actual 模式 https://kotlinlang.org/docs/mpp-connect-to-apis.html。然后你可以使用 java.io 代表 Android,Bundle 代表 iOS 等等,这取决于你的目标平台

您可能想看看 OKIO。有 一些 多平台支持和 Windows 目标,但我不知道文件系统部分是否在 Windows 上实现:https://github.com/square/okio

最后还是用了库Korio。文档可能会更好,但我需要的所有功能都已针对所有平台(Jvm、桌面、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()
}

最重要的是,它允许使用相同的 API 来访问在线文件、zip 存档等,这非常简洁。