我试图通过从头到尾读取文件来获得行开始偏移量。我的目的是建立一个索引[line\u number-->start\u offset in file]。下面使用guava库,示例代码和使用的库如下。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.0-jre</version>
</dependency>
try {
ByteSource byteSource = Files.asByteSource(new File(filePath));
CountingInputStream cStream = new CountingInputStream(byteSource.openStream());
Iterator<String> lines = byteSource.asCharSource(defaultCharset()).lines().iterator();
//lines.forEachRemaining((line) -> System.out.println(input.getCount()));
while (lines.hasNext()) {
//String line = lines.next();
//System.out.println(line);
System.out.println("OFFSET:" + cStream.getCount());
}
} catch (IOException e) {
e.printStackTrace();
}
输出:
OFFSET:0
OFFSET:0
OFFSET:0
OFFSET:0
.
.
.
尽管它打印了行的内容(如果我取消对代码的注解- System.out.println(line)
),所有线偏移为0。为什么偏移量正确( line_start
)没有返回,上面的代码段中缺少什么?我需要手动跳过行吗 cStream.skip(line.length());
每一次,然后做 cStream.getCount()
? 有没有其他建议的方法来实现这一点?
暂无答案!
目前还没有任何答案,快来回答吧!