我想索引一个非常大的文本文件的每100行及其相应的字节偏移量。当我正在读取文件以使用bufferedreader创建索引时,是否可以确定我所处的字节位置?
答案 0 :(得分:1)
您可以使用:
public int read(char[] cbuf,
int off,
int len)
throws IOException
并使用返回值int,即读取的字符数,然后将此信息保存在计数器上,这样当您阅读100时:
System.getProperty("line.separator");
您可以使用此计数器获取您所在的字节位置。
答案 1 :(得分:1)
您可以使用RandomAccessFile。使用 readLine 方法获取下一行 N 行文本,然后使用 确定文件中的当前位置getFilePointer 方法。
一个警告是,这无法处理Unicode字符串中的读取。
答案 2 :(得分:0)
使用BufferedReader并不好,除非您可以确定您的行都是ASCII并且换行符是一致的(所有CR + LF或仅所有LF)。我建议你使用BufferedInputStream,然后搜索'\ n'。