我有一个像
这样的文本文件one
two
three
four
five
我需要获取文件中每一行的偏移量。我如何用Java做到这一点?
我搜索了一些I / O库(比如BufferedReader和RandomAccessFile),但我无法找到满意的答案。
有人可以建议如何处理这个问题吗?
答案 0 :(得分:5)
a)字节偏移0,即。文件开始
b)用一些东西打开文件来读取二进制字节块(而不是字符串等),
读取整个文件(每次最多4096字节的循环)
并在每次循环迭代中搜索块中值为'\n'
的字节
每个'\n'
的位置加上前一个块* 4096的计数是另一个行偏移。
答案 1 :(得分:0)
另一种方法是计算每行线的字节
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添加到每行的大小