我正在使用tellg()
来获取某些文件的大小,而且这个项目非常重要,可以获得真实/正确的文件大小。现在我有点担心,因为一个tellg()的读取不能很好地工作,但它可能会得到错误的大小,可能比实际大小更大。例如:tellg() function give wrong size of file?
如何才能获得正确的尺寸?或者tellg
不能很好地工作吗?
这是我的tellg()
代码:
streampos begin,end;
ifstream file_if(cpd_file, ios::binary);
begin = file_if.tellg();
file_if.seekg(0, ios::end);
end = file_if.tellg();
file_if.close();
size = end - begin;
答案 0 :(得分:3)
此时,您可以使用boost::filesystem::file_size来获取文件大小。
在不久的将来,它将标准化为std::filesystem::file_size
,这是一项实验性功能,请参阅std::experimental::filesystem::file_size。
std::experimental::filesystem::file_size支持:
libstdc++
5.3或更高版本libc++
3.8或更高版本答案 1 :(得分:3)
要获取文件的大小和其他信息,例如它的创建和修改时间,它的所有者,权限等,您可以使用stat()
功能。
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
struct stat s;
if (stat("path/to/file.txt", &s)) {
// error
}
printf("filesize in bytes: %u\n", s.st_size);
文档: