【发布时间】:2015-06-23 16:11:19
【问题描述】:
我正在使用可搜索的 InputStream,它在特定位置将流返回给我。流中的底层数据使用 UTF-8 编码。我想使用 inputStreamReader 打开这个流并一次读取一个字符。
这是我的代码 sn-p
inputStream.seek(position-1);
InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
问题在于,如果 position-1 可能指向多字节 UTF-8 序列的中间。如何检测以确保它从新的 UTF-8 编码序列开始?提前致谢。
【问题讨论】:
-
那么
position意味着是什么?你从哪里获得价值?拥有一个您信任的值似乎很奇怪,但不知道它位于角色的开头。 (诚然,有很多方法可以做你想做的事......) -
@Jon :底层数据流包含序列化的复杂对象。可变位置用于拆分此缓冲区并以较小的块进行处理。但拆分可能并不完全位于对象边界处。我通过 RPC 从另一个进程获取值。我无法控制如何设置位置。