1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #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
|