我如何寻找现有文件的结尾?

时间:2012-10-12 03:53:48

标签: c++ windows linux file-io

我如何寻找现有文件的结尾?

考虑我有test.bin这是1000字节。

然后我运行以下

std::filebuf fbuf;
fbuf.open("c:\\test.bin", std::ios_base::in | std::ios_base::out | std::ios_base::app | std::ios_base::binary);
fbuf.pubseekoff(10, std::ios_base::end);
fbuf.sputc(1);
fbuf.close();

运行此示例后,我希望新的文件大小为1011字节。但是它在现有文件的末尾添加了0x01,使其成为1001字节。

有趣的是,虽然它是新文件时我想要的方式。

我在Windows 7 x64上运行它,但目标平台将是Ubuntu。

1 个答案:

答案 0 :(得分:3)

您设置了std::ios_base::app标志。这会导致所有写入都发生在文件末尾。如果要在当前位置执行写入,则在打开文件时无法指定此标志。

  

ios_base::app附加档案;也就是说,总是写到文件的末尾