kotlinx-io
这是一个提供基本IO原语的多平台Kotlin库。kotlinx-io
基于Okio,但不保持与之的向后兼容性。
概述
kotlinx-io的核心是Buffer
- 一个可变的字节序列。
Buffer
的工作原理类似于队列,允许从其头部读取数据或向其尾部写入数据。Buffer
提供了读写不同内置类型数据的函数,以及与其他Buffer
之间复制数据的功能。根据目标平台的不同,还提供了与平台特定类型进行数据交换的扩展函数。
Buffer
由组织成链表的段组成:段允许在缓冲区扩展和复制过程中减少内存分配,后者通过委托或与其他缓冲区共享底层缓冲区段的所有权来实现。
kotlinx-io提供了表示数据源和目标的接口 - Source
和Sink
,除了可变的Buffer
外,该库还提供了不可变的字节序列 - ByteString
。
实验性的文件系统支持在kotlinx.io.files
包下提供,其中包括FileSystem
接口及其默认实现 - SystemFileSystem
。
FileSystem
提供了处理文件和目录的基本操作,文件和目录由同一包下的另一个类 - Path
表示。
kotlinx-io有两个模块:
- kotlinx-io-bytestring - 提供
ByteString
。 - kotlinx-io-core - 提供IO原语(
Buffer
、Source
、Sink
)、文件系统支持,依赖于kotlinx-io-bytestring
。
在项目中使用
请注意,该库是实验性的,API可能会发生变化。
Gradle
确保您的仓库列表中包含mavenCentral()
:
repositories {
mavenCentral()
}
将库添加到依赖项中:
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.5.1")
}
在多平台项目中,将依赖项添加到commonMain
源集依赖项中:
kotlin {
sourceSets {
commonMain {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.5.1")
}
}
}
}
Maven
将库添加到依赖项中:
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-io-core-jvm</artifactId>
<version>0.5.1</version>
</dependency>
Android
kotlinx-io
并未在Android上进行定期测试,但该库与Android 5.0+(API级别21+)兼容。
贡献
请阅读贡献指南。
行为准则
本项目及其相应的社区受JetBrains开源和社区行为准则管理。请确保您已阅读它。
许可证
kotlinx-io 使用 Apache 2.0 许可证。
致谢
感谢所有参与该项目的人。
特别感谢Okio的开发者,Okio是kotlinx-io
的基础,以及Jesse Wilson在Okio
适配方面的帮助,以及他对kotlinx-io
开发的建议、协助和指导。