#ifndef __BIG_FILE_H #define __BIG_FILE_H // common #include "File.h" /** * @brief * File.h仅支持2G(32位有符号数 =》 2G)文件的读写操作 * * 读取大文件(超过2G)时会产生错误 * * BigFile使用标准库接口重新封装了对大文件的读写操作 * * @notes * 使用64位有符号数进行操作,64位有符号数的最大值为: * 9,223,372,036,854,775,808 * 最大支持不超过 * 8,589,934,592 GiB文件的操作 * * @note * !! BigFile用于处理二进制文件,不支持读写文本文件 */ namespace tzc { class DECLDLL BigFile { public: BigFile(); BigFile(const std::string & path); ~BigFile(); TZ_Int32 Open(TZ_Uint32 openMode = tzc::File::OpenModeRead | tzc::File::OpenModeBinary | tzc::File::OpenModeSync); TZ_Int32 Close(void); TZ_Int64 Read(TZ_BYTE * pData, TZ_Int64 readLen); TZ_Int64 Write(const TZ_BYTE * pData, TZ_Int64 writeLen); TZ_Int64 Seek(TZ_Int64 offset, tzc::File::FileSeekPos pos); TZ_Int64 Truncate(TZ_Int64 newSize); TZ_Int64 Tell(void); TZ_Int64 GetFileSize(void); const std::string & GetFilePath() const; // none-zero for in the end, zero for not TZ_BOOL IsEndOfFile(void); private: std::string getStrFileMode(void); private: FILE * m_file; TZ_Uint32 m_openMode; std::string m_filePath; }; }; // ! namespace tzc #endif // !__BIG_FILE_H