00001 #ifndef __FILE_H__
00002 #define __FILE_H__
00003
00004 #include "Common/CommonDll.h"
00005 #include "Common/Types.h"
00006 #include "Common/Str.h"
00007
00008
00009 typedef enum _KFILEMODE
00010 {
00011 KFM_READ,
00012 KFM_WRITE,
00013 KFM_READWRITE
00014 } KFILEMODE;
00015
00016 typedef enum _KFILESEEK
00017 {
00018 KFS_BEGIN,
00019 KFS_CURRENT,
00020 KFS_END
00021 } KFILESEEK;
00022
00023
00024 class COMMON_API KFileTime
00025 {
00026 public:
00027 u32 m_Size;
00028 u32 m_Year;
00029 u32 m_Month;
00030 u32 m_Day;
00031 u32 m_Hour;
00032 u32 m_Minute;
00033 u32 m_Second;
00034
00035 KFileTime()
00036 {
00037 m_Size = 0;
00038 m_Year = 0;
00039 m_Month = 0;
00040 m_Day = 0;
00041 m_Hour = 0;
00042 m_Minute = 0;
00043 m_Second = 0;
00044 }
00045 };
00046
00047
00048 class COMMON_API KFile
00049 {
00050 protected:
00051 void* m_hFile;
00052 int m_bEOF;
00053 KFILEMODE m_Mode;
00054 KStr m_sFileName;
00055
00056 public:
00057 KFile();
00058
00059 int Create( KStr sFileName, KFILEMODE Mode = KFM_READWRITE );
00060 int Open( KStr sFileName, KFILEMODE Mode = KFM_READ );
00061 int Close();
00062 int Read( unsigned char* pBuffer, unsigned long ByteToRead, unsigned long* pByteRead = NULL );
00063 int Write( unsigned char* pBuffer, unsigned long ByteToWrite, unsigned long* pByteWrite = NULL );
00064 int Rewind();
00065 int Seek( long Distance, KFILESEEK SeekMode );
00066 int Tell( unsigned long* pCurrentPos );
00067 int ReadChar( char* pChar );
00068 int ReadString( KStr& sString );
00069 int WriteString( KStr& sString );
00070 int ReadText( KStr& sString );
00071 int WriteText( KStr& sString );
00072 int GetSize();
00073 int GetLastWriteTime( KFileTime* pFileTime );
00074
00075 int IsEOF() { return m_bEOF; }
00076 int Reset();
00077 KFILEMODE GetMode() { return m_Mode; }
00078 KStr& GetsFileName() { return m_sFileName; }
00079
00080 static char* GetFileExtension( char* pFileName );
00081 static char* GetFileName( char* pFileName );
00082
00083 template <class T> KFile& operator >>( T& Data ) { Read( (unsigned char*)&Data, sizeof( Data ) ); return *this; };
00084 template <class T> KFile& operator <<( T& Data ) { Write( (unsigned char*)&Data, sizeof( Data ) ); return *this; };
00085 };
00086
00087 #endif __FILE_H__