KotlinToolbox
我的 Kotlin Multiplatform 工具箱,包含文件操作、HTTP 请求和系统信息。
包含的工具
1. LZHttpClient - HTTP 客户端
基于 Ktor 的 HTTP 请求封装,提供简洁的 API。
功能:
get<T>(url, parameters) - GET 请求
post<T>(url, body) - POST 请求
- 自动 JSON 序列化/反序列化
- 内置日志记录
- 返回
Result<T> 统一错误处理
使用:
val http = LZHttpClient()
lifecycleScope.launch {
val result = http.get<MyData>("https://api.example.com/data")
result.onSuccess { data ->
println("成功: $data")
}.onFailure { error ->
println("失败: ${error.message}")
}
val postResult = http.post<Response>(
,
body = mapOf( to )
)
http.close()
}
2. LZFileManager - 文件管理
基于 kotlinx-io 的跨平台文件操作。所有方法都是 suspend 函数。
功能:
listFiles(path) - 列出目录文件
deleteFile(path) - 删除文件
moveFile(src, dest) - 移动文件
copyFile(src, dest) - 复制文件
unzip(zipPath) - 解压 ZIP(JVM/Android)
使用:
val fm = LZFileManager()
lifecycleScope.launch {
val result = fm.listFiles("/path/to/dir")
when (result) {
is FileResult.Success -> result.data.forEach { (name, path) -> ... }
FileResult.Error -> println()
}
fm.deleteFile()
fm.moveFile(, )
fm.copyFile(, )
unzipResult = fm.unzip()
}
3. LZFileDownloader - 文件下载
基于 Ktor 的流式下载,带进度。
使用:
val http = LZHttpClient()
val downloader = LZFileDownloader(http.client)
lifecycleScope.launch {
downloader.download("https://example.com/file.zip", "/save/path.zip")
.collect { status ->
when (status) {
is DownloadStatus.Downloading -> {
println("${(status.progress * 100).toInt()}%")
}
DownloadStatus.Completed -> println()
DownloadStatus.Error -> println(status.message)
-> {}
}
}
http.close()
}
4. LZSystemInfo - 系统信息
获取当前运行环境的系统信息。
使用:
val info = LZSystemInfo.get()
println("OS: ${info.osName} ${info.osVersion}")
println("Arch: ${info.arch}")
println("Model: ${info.model}")
错误处理
所有操作都返回结构化结果,不会乱打 log:
when (result) {
is FileResult.Success ->
is FileResult.Error ->
}
错误代码:
FILE_NOT_FOUND - 文件不存在
PERMISSION_DENIED - 权限不足
UNSUPPORTED_PLATFORM - 平台不支持(iOS 解压)
IO_ERROR - I/O 错误
UNKNOWN - 其他错误
平台支持
iOS 解压返回 UNSUPPORTED_PLATFORM 错误,需要自己用原生库。
依赖
kotlinx-io = "0.8.2"
ktor = "3.3.3"
implementation(libs.kotlinx.io.core)
implementation(libs.ktor.client.core)
implementation(libs.ktor.client.cio)
implementation(libs.ktor.client.content.negotiation)
implementation(libs.ktor.serialization.kotlinx.json)
implementation(libs.ktor.client.logging)
使用方式
注意:LZFileManager 和 LZHttpClient 的所有方法都是 suspend 函数,需要在协程中调用:
import lzdev42.kotlintoolbox.LZHttpClient
import lzdev42.kotlintoolbox.LZFileManager
import lzdev42.kotlintoolbox.LZFileDownloader
import lzdev42.kotlintoolbox.LZSystemInfo
示例用法:
lifecycleScope.launch {
val http = LZHttpClient()
val fm = LZFileManager()
val downloader = LZFileDownloader(http.client)
http.close()
}
依赖
添加到 build.gradle.kts:
repositories {
maven { url = uri("https://jitpack.io") }
}
dependencies {
implementation("lzdev42:kotlintoolbox:0.2.0")
}
就这些。