3

我有一个文本文件

one
two
three
four
five

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

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

谁能建议如何处理这个问题?

4

2 回答 2

5

a) 字节偏​​移量 0,即。文件开始
b)打开文件以读取二进制字节块(而不是字符串等),
读取整个文件(在循环中,每次最多 4096 字节)并在块中
搜索具有值的字节,'\n'在每个循环迭代中。
每个位置'\n'加上前一个块的计数 * 4096 是另一个行偏移量。

于 2014-03-02T23:48:03.510 回答
1

另一种方法是计算每一行的字节数

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

于 2014-03-02T23:53:41.907 回答