如何获取文件的当前位置

时间:2019-07-24 11:42:44

标签: file go

我正在逐个读取文件,并想打印文件位置(字节位置)。示例代码段:

inFile *os.File
inFile, err := os.Open(myfile)
size := make([]byte, some_size)
content_size, err := inFile.Read(size)

现在,这是在具有各种缓冲区大小的循环中完成的。那么,我是否必须维护一个变量,在其中将要累加作为Read的返回数据获得的内容大小?

相反,在完成所有读取操作之后,我能否获得文件指针的位置(字节)?如何获得文件的当前位置?

2 个答案:

答案 0 :(得分:2)

函数File.Seek返回文件中的所得偏移量。要获取当前偏移量,请从当前位置寻找零个字节:

 offset, err := f.Seek(0, os.SEEK_CUR)

答案 1 :(得分:-1)

要获取文件中的偏移量(位置),必须使用搜寻(https://golang.org/pkg/os/#File.Seek)。 您只需要注意地点,因为这可能会造成混淆。所以2表示相对于文件末尾。

startPos, err := file.Seek(offset, 2)
    if err != nil {
        return "", err
    }