我有一个文本文件
one
two
three
four
five
我需要获取文件中每一行的偏移量。我如何在 Java 中做到这一点?
我已经搜索了一些 I/O 库(如 BufferedReader 和 RandomAccessFile),但我无法找到令人满意的答案。
谁能建议如何处理这个问题?
我有一个文本文件
one
two
three
four
five
我需要获取文件中每一行的偏移量。我如何在 Java 中做到这一点?
我已经搜索了一些 I/O 库(如 BufferedReader 和 RandomAccessFile),但我无法找到令人满意的答案。
谁能建议如何处理这个问题?
a) 字节偏移量 0,即。文件开始
b)打开文件以读取二进制字节块(而不是字符串等),
读取整个文件(在循环中,每次最多 4096 字节)并在块中
搜索具有值的字节,'\n'
在每个循环迭代中。
每个位置'\n'
加上前一个块的计数 * 4096 是另一个行偏移量。
另一种方法是计算每一行的字节数
BufferedReader br = null;
try {
String line;
// in my test each character was one byte
ArrayList<Integer> byteoffset = new ArrayList<Integer>();
br = new BufferedReader(new FileReader("numbers.txt"));
Integer l = 0;
while ((line = br.readLine()) != null) {
System.out.println(line);
Integer num_bytes = line.getBytes().length;
System.out.println(num_bytes);
byteoffset.add( l==0 ? num_bytes : byteoffset.get(l-1)+num_bytes );
l++;
}
} catch ( Exception e) {
}
在此示例中,您还需要将换行符 \n 的大小添加到每行的大小