Java 对于几种编程语言,文件指针的偏移量是否稳健/可靠?

Java 对于几种编程语言,文件指针的偏移量是否稳健/可靠?,java,c++,io,Java,C++,Io,我有一个关于读取Java或C/C++文件的问题。通常可以获得文件中当前位置的偏移值。 这种补偿有多强大?假设文件没有更改,当然,如果我将流定位在这个偏移量上,我会通过Java读取与使用C/C++相同的行吗? 我想是的,但我想知道我是否遗漏了什么?我想做的是制作某种索引,在特定文件中返回这个偏移量值?这个偏移量是否绑定到某个API甚至x位体系结构 在这方面,给定文件中给定字节的偏移量对于(至少)具有POSIX/POSIX类文件模型的任何系统都是100%可靠的。因此,同样的冒犯将给你在爪哇和C++中

我有一个关于读取Java或C/C++文件的问题。通常可以获得文件中当前位置的偏移值。 这种补偿有多强大?假设文件没有更改,当然,如果我将流定位在这个偏移量上,我会通过Java读取与使用C/C++相同的行吗? 我想是的,但我想知道我是否遗漏了什么?我想做的是制作某种索引,在特定文件中返回这个偏移量值?这个偏移量是否绑定到某个API甚至x位体系结构


在这方面,

给定文件中给定字节的偏移量对于(至少)具有POSIX/POSIX类文件模型的任何系统都是100%可靠的。因此,同样的冒犯将给你在爪哇和C++中相同的字节。但是,这取决于您是否正确使用各自语言的I/O API;i、 e.理解它们


<>一个可能会有点棘手的事情是,当你在C++中使用一些“二进制I/O”方案时,它会把对象(或结构)当作字节数组来处理,并读/写那些字节。如果你这样做,你就有问题:C/C++对象的字节级表示是依赖于平台的。例如,您可能会遇到big-endian vs-little-endian问题。这不会改变偏移量。。。但这可能意味着“东西”由于表示不匹配而被弄脏


最好的做法是使用不依赖于文件读写平台的文件表示形式;i、 不要这样做。

要进一步了解定位在
std::istream
C++
中的派生类型的工作原理,请查看标准或一些在线参考资料
std::basic\u istream::seekg()
std::basic\u istream::tellg()