使用 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 存档等,这非常简洁。
我想在 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 存档等,这非常简洁。