7Zip软件实现: 七种编码格式的压缩与解压缩功能。

源代码在线查看: file.hpp

软件大小: 608 K
上传用户: xieqinplay
关键词: 7Zip 软件实现 编码 解压
下载地址: 免注册下载 普通下载 VIP

相关代码

				#ifndef _RAR_FILE_				#define _RAR_FILE_								#ifdef _WIN_32				typedef HANDLE FileHandle;				#define BAD_HANDLE INVALID_HANDLE_VALUE				#else				typedef FILE* FileHandle;				#define BAD_HANDLE NULL				#endif								class 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							

相关资源