1 // Common/C_FileIO.h 2 3 #ifndef __COMMON_C_FILEIO_H 4 #define __COMMON_C_FILEIO_H 5 6 #include <stdio.h> 7 #include <sys/types.h> 8 9 #include "Types.h" 10 #include "MyWindows.h" 11 12 namespace NC { 13 namespace NFile { 14 namespace NIO { 15 16 class CFileBase 17 { 18 protected: 19 int _handle; 20 bool OpenBinary(const char *name, int flags); 21 public: CFileBase()22 CFileBase(): _handle(-1) {}; ~CFileBase()23 ~CFileBase() { Close(); } 24 bool Close(); 25 bool GetLength(UInt64 &length) const; 26 off_t Seek(off_t distanceToMove, int moveMethod) const; 27 }; 28 29 class CInFile: public CFileBase 30 { 31 public: 32 bool Open(const char *name); 33 bool OpenShared(const char *name, bool shareForWrite); 34 ssize_t Read(void *data, size_t size); 35 }; 36 37 class COutFile: public CFileBase 38 { 39 public: 40 bool Create(const char *name, bool createAlways); 41 bool Open(const char *name, DWORD creationDisposition); 42 ssize_t Write(const void *data, size_t size); 43 }; 44 45 }}} 46 47 #endif 48