计算文件大小的c++
Figuring out the size of file C++
我试图找出使用提供的代码文件的大小,并将结果传递到我的文件对象。它只会传递文件大小,如果它是一个特定的扩展名,这个函数工作得很好,我遇到的唯一问题是文件大小,file.tellg()为每个文件大小传递-1。
void NonRecursiveProcess(string directory)
{
for(directory_iterator dir_end, dir(directory); dir != dir_end; ++dir)
{
path _path(*dir);
if(!is_directory(_path))
{
for ( vector<ExtensionAbstract*>::iterator it = extensionsAbstract.begin() ; it != extensionsAbstract.end(); ++it)
{
if ( _path.file_string().substr(_path.file_string().find_last_of(".") + 1) == (*it)->GetExtension())
{
std::ifstream ifile(_path.file_string(), std::ifstream::in | std::ifstream::binary );
ifile.seekg(0, std::ios_base::end);
(*it)->AddkB(ifile.tellg());
(*it)->AddFileCount();
}
}
}
}
}`
istream::tellg()返回-1如果ifstream处于失败状态。Fail可以在seekg()中设置,或者更可能的是在构造函数中设置——在构造之后检查文件状态,看看它是否实际打开了。你可能会被拒绝访问,名字中有错误或者其他什么。
一个可能的错误来源:是不是_path.file_string()
只返回文件名没有绝对路径?如果是,文件构造函数会给你"file not found"。
否则,ifile.seekg(0,std::ios_base::end);
和ifile.tellg();
的组合应该在任何二进制文件上正常工作,给出文件大小。
也许stat会有用(我知道它不是标准的)。
无论如何,这应该是函数
的签名void NonRecursiveProcess(const string &directory)
相关文章:
- 读取某些文件时出现分段错误,似乎与文件大小无关
- 构建挂起,即使是适度的文件大小
- 如何在Windows内核中获取文件大小
- 为什么 QFileSystemWatcher 会发出多个信号?而 QFileInfo 首次写入零文件大小
- 使用 C++ iOS::ate 获取错误的文件大小
- 相同的源代码,不同的可执行文件大小?
- 为什么未关闭的文件大小为 4 字节
- 读取二进制文件大小的短自上周以来停止工作
- 如何减小C++标准库libstdc++.so文件大小
- 文件大小和缓冲区过冲
- 如何从范围 v3 的istream_range中检索文件大小?
- 如何使用直接IO编写一个带有扩展文件大小的小文件
- 如何使用文件系统库获取"true"文件大小?(C++17)
- 如何限制文件大小,以便我的程序在变大之后创建一个新文件?并编辑新创建的文件的名称
- 如何使用C 17获取文件大小
- HttpQueryInfo 获取文件大小
- 二进制文件大小大于预期的 c++
- 如何计算预期的核心文件大小
- C :不正确的文件大小计算Winapi
- 减小 Wasm 文件大小(libc、optimization、emscripten)