📄 file.hpp
字号:
#ifndef _RAR_FILE_#define _RAR_FILE_#ifdef _WIN_32typedef HANDLE FileHandle;#define BAD_HANDLE INVALID_HANDLE_VALUE#elsetypedef FILE* FileHandle;#define BAD_HANDLE NULL#endifclass RAROptions;enum FILE_HANDLETYPE {FILE_HANDLENORMAL,FILE_HANDLESTD,FILE_HANDLEERR};enum FILE_ERRORTYPE {FILE_SUCCESS,FILE_NOTFOUND,FILE_READERROR};struct FileStat{ uint FileAttr; uint FileTime; Int64 FileSize; bool IsDir;};class File{ private: void AddFileToList(FileHandle hFile); FileHandle hFile; bool LastWrite; FILE_HANDLETYPE HandleType; bool SkipClose; bool IgnoreReadErrors; bool NewFile; bool AllowDelete; bool AllowExceptions;#ifdef _WIN_32 bool NoSequentialRead;#endif protected: bool OpenShared; public: char FileName[NM]; wchar FileNameW[NM]; FILE_ERRORTYPE ErrorType; uint CloseCount; public: File(); virtual ~File(); void operator = (File &SrcFile); bool Open(const char *Name,const wchar *NameW=NULL,bool OpenShared=false,bool Update=false); void TOpen(const char *Name,const wchar *NameW=NULL); bool WOpen(const char *Name,const wchar *NameW=NULL); bool Create(const char *Name,const wchar *NameW=NULL); void TCreate(const char *Name,const wchar *NameW=NULL); bool WCreate(const char *Name,const wchar *NameW=NULL); bool Close(); void Flush(); bool Delete(); bool Rename(const char *NewName); void Write(const void *Data,int Size); int Read(void *Data,int Size); int DirectRead(void *Data,int Size); void Seek(Int64 Offset,int Method); bool RawSeek(Int64 Offset,int Method); Int64 Tell(); void Prealloc(Int64 Size); byte GetByte(); void PutByte(byte Byte); bool Truncate(); void SetOpenFileTime(RarTime *ftm,RarTime *ftc=NULL,RarTime *fta=NULL); void SetCloseFileTime(RarTime *ftm,RarTime *fta=NULL); static void SetCloseFileTimeByName(const char *Name,RarTime *ftm,RarTime *fta); void SetOpenFileStat(RarTime *ftm,RarTime *ftc,RarTime *fta); void SetCloseFileStat(RarTime *ftm,RarTime *fta,uint FileAttr); void GetOpenFileTime(RarTime *ft); bool IsOpened() {return(hFile!=BAD_HANDLE);}; Int64 FileLength(); void SetHandleType(FILE_HANDLETYPE Type); FILE_HANDLETYPE GetHandleType() {return(HandleType);}; bool IsDevice(); void fprintf(const char *fmt,...); static bool RemoveCreated(); FileHandle GetHandle() {return(hFile);}; void SetIgnoreReadErrors(bool Mode) {IgnoreReadErrors=Mode;}; char *GetName() {return(FileName);} long Copy(File &Dest,Int64 Length=INT64ERR); void SetAllowDelete(bool Allow) {AllowDelete=Allow;} void SetExceptions(bool Allow) {AllowExceptions=Allow;}#ifdef _WIN_32 void RemoveSequentialFlag() {NoSequentialRead=true;}#endif};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -