1

我正在尝试从将按顺序存储的文件中读取和解析一些信息。,一个 char[] 大小为 8一个 int一个 int[] 大小为 8,最后是一个 int。所以,我正在阅读 56 个字节的信息。我正在使用 RandomAccessFile 并且想知道在执行 readChar() 和 readInt() 的每个操作之后是否需要 seek() 或者我是否可以一个接一个地调用这些方法。我想这更多的是关于文件指针是否会在每次操作完成后重置或者是否安全的问题,因此假设 fp 将跟随它的最后一个位置,直到文件关闭。

这是我写的:

        int currentOffset = 128;
        for(int i = 0; i<16; i++){
            //Initialize nodes. 
            readDisk.seek(currentOffset);
            char[] name = new char[8];
            for(int j = 0; j<8; j++){
                name[i] = readDisk.readChar();
            }
            int size = readDisk.readInt();
            int[] blockPointers = new int[8];
            for(int j = 0; j<8; j++){
                blockPointers[i] = readDisk.readInt();
            }
            int used = readDisk.readInt();

这些操作后fp会在156吗?谢谢!对不起,如果这是一个愚蠢的问题。

4

1 回答 1

2

是的,读取移动文件指针读取的字节数,试试这个

    RandomAccessFile f = new RandomAccessFile("1.txt", "r");
    f.readChar();
    System.out.println(f.getFilePointer());

输出

2
于 2014-04-16T01:56:07.947 回答