详细内容见
https://blog.csdn.net/lyabc123456/article/details/88830541
在OKio中,将所有的输入称为Source,将所有的输出称为Sink, Source与Sink定义了对外提供的接口。 OKio所做的,就是实现原始数据与Source与Sink间的互动。Sources类似java的Inputstream,Sinks类似java的Outputstream。
ByteString:不可变的字节序列,自动编码和解码为十六进制、base64和utf-8
Buffer:缓冲区,实现方式是片段的链表。当将数据从一个缓冲区移动到另一个缓冲区时,它会重新分配片段的持有关系,而不是跨片段复制数据。这对多线程特别有用:与网络交互的子线程可以与工作线程交换数据,而无需任何复制或多余的操作
写二进制数据需要注意字段的宽度、字段的字节顺序、有符号和无符号
//读取文件
public void readLines(File file) throws IOException {
try (BufferedSource bufferedSource = Okio.buffer(Okio.source(file))) {
for (String line; (line = bufferedSource.readUtf8Line()) != null; ) {
System.out.println(line);
}
}