如何使用C ++获取文件的实际大小?

时间:2016-11-03 10:08:23

标签: c++ file size byte

我正在使用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;

2 个答案:

答案 0 :(得分:3)

此时,您可以使用boost::filesystem::file_size来获取文件大小。

在不久的将来,它将标准化为std::filesystem::file_size,这是一项实验性功能,请参阅std::experimental::filesystem::file_size

std::experimental::filesystem::file_size支持:

  • MSVC 2013或更高版本,
  • 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);

文档: