获取文本文件中行的字节偏移量?

时间:2014-03-02 23:42:01

标签: java bufferedreader offset randomaccessfile

我有一个像

这样的文本文件
one
two
three
four
five

我需要获取文件中每一行的偏移量。我如何用Java做到这一点?

我搜索了一些I / O库(比如BufferedReader和RandomAccessFile),但我无法找到满意的答案。

有人可以建议如何处理这个问题吗?

2 个答案:

答案 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添加到每行的大小