【发布时间】:2014-04-15 21:15:36
【问题描述】:
我有一个文件中的字符偏移量,我正在寻找一种方法来读取跨越这些偏移量的字符。我尝试使用 bufferedReader,但返回的字节来自文件的开头。
理想情况下,我想寻找文件中的某个位置并读取特定长度的字节。
任何人都可以提出替代解决方案吗?
【问题讨论】:
我有一个文件中的字符偏移量,我正在寻找一种方法来读取跨越这些偏移量的字符。我尝试使用 bufferedReader,但返回的字节来自文件的开头。
理想情况下,我想寻找文件中的某个位置并读取特定长度的字节。
任何人都可以提出替代解决方案吗?
【问题讨论】:
基本上,这取决于字符编码。
如果您使用 UTF-8 并且文本中有非 ASCII 字符,那么字符偏移量对您必须寻找的 byte 偏移量的影响相对较小。 (文件系统基本上是字节,而不是字符。)
但是,如果您使用的是固定宽度编码,您可以简单地将字符偏移量乘以字符宽度(以字节为单位),然后使用InputStream.skip 跳到文件的右侧部分:
FileInputStream
InputStreamReader - 确保指定编码!同样,如果您使用可变宽度编码(例如 UTF-8),您基本上不会从字符偏移中获得太多信息。
【讨论】: