0

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

问候,

4

1 回答 1

2

对于(至少)任何具有类似 POSIX / POSIX 文件模型的系统,给定文件中给定字节的偏移量将是 100% 可靠的。因此,在 Java 和 C++ 中,相同的节日将为您提供相同的字节。但是,这确实取决于您正确使用相应语言的 I/O API;即理解他们。


可能会有点棘手的一件事是,当您在 C++ 中使用一些“二进制 I/O”方案时,该方案涉及将对象(或结构)视为字节数组并读取/写入这些字节。如果你这样做,你就会遇到 C/C++ 对象的字节级表示依赖于平台的问题。例如,您可能会遇到大端与小端的问题。这不会改变偏移量......但它可能意味着“东西”由于表示不匹配而被破坏。

最好的办法是使用不依赖于读取或写入文件的平台的文件表示;即不要那样做。

于 2013-10-23T12:18:40.427 回答