如果是ifstream使用seekg和tellg:
ifstream fsRead;
fsRead.open(srcFilePath.c_str(), ios::in|ios::binary);
if (!fsRead) {
sec_error("Uncompress processing: can not open source file! [%s]",src_file_name);
return -3;
}
fsRead.seekg(0, fsRead.end);
size_t srcSize = fsRead.tellg();
if (!srcSize) {
sec_error("Source file: [%s] size is 0! Return directly!",srcFilePath.c_str());
fsRead.close();
sec_error("File closed successfully!");
return 0;
}
sec_debug("Source file :[%s] size is : [%d]",srcFilePath.c_str(), srcSize);\
如果是ofstream使用seekp和tellp
ofstream fsWrite;
fsWrite.open(destFilePath.c_str(), ios::out|ios::binary);
if (!fsWrite) {
fsRead.close();
sec_error("Compress processing: can not open destination file! [%s]",des_file_name);
return -3;
}
// Some work ...
fsWrite.seekp(0, fsWrite.end);
size_t dstFileSize = fsWrite.tellp();