Rev 1 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#ifndef __FILE_IO_H__
#define __FILE_IO_H__
#include "CyString.h"
#include "StringList.h"
#include <fstream>
#include <vector>
#include "DirIO.h"
#include <time.h>
#if defined(_WIN32) || defined(OS2) || defined(MSDOS)
#include <fcntl.h>
#include <io.h>
#define MY_SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY)
#else
#define MY_SET_BINARY_MODE(file)
#endif
#define EPOCH_DIFF 0x019DB1DED53E8000LL /* 116444736000000000 nsecs */
#define RATE_DIFF 10000000 /* 100 nsecs */
class C_File;
enum {FILEERR_NONE, FILEERR_NOFILE, FILEERR_NOOPEN, FILEERR_TOSMALL, FILEERR_NOWRITE};
class SPKEXPORT CFileIO
{
public:
CFileIO ();
CFileIO ( CyString filename );
CFileIO ( C_File *file );
~CFileIO ();
bool StartRead();
bool StartReadOld();
void StopRead();
CyString ReadToEndLine(bool = true);
bool AtEnd();
time_t GetCreationTime();
void SetCreationTime(time_t time);
std::vector<CyString> *ReadLines();
CyStringList *ReadLinesStr();
bool WriteFile(std::vector<CyString> *lines);
bool WriteFileUTF(std::vector<CyString> *lines);
bool WriteFile(CyStringList *lines);
bool Remove();
bool Rename(CyString toFile);
bool Copy(CyString toFile, bool keepTime = false);
bool IsOpened();
bool Open ( CyString filename, bool = true );
void ReadFileSize ();
CyString GetBaseName();
CyString GetFullFilename () { return m_sFilename; }
CyString GetFilename () { return m_sFile; }
CyString GetDir() { return m_sDirIO.Dir(); }
CDirIO &GetDirIO() { return m_sDirIO; }
bool NoFile () { return m_sFilename.Empty(); }
size_t GetFilesize () { return m_lSize; }
char *ReadToData ( size_t *size );
bool WriteData ( const char *data, size_t size );
bool WriteString ( CyString data );
bool WritePartFile ( size_t *offsets, size_t numOffset );
int TruncateFile ( size_t offset, size_t datasize );
bool WipeFile();
bool Exists ();
bool AppendFile ( CyString filename );
bool AppendData ( const char *d, size_t size );
bool AppendDataToPos ( const char *d, size_t size, size_t start );
bool CheckFileExtension(CyString ext) { return (GetFileExtension().Compare(ext)) ? true : false; }
CyString GetFileExtension ();
CyString ChangeFileExtension ( CyString ext );
CyString GetWindowsFilename();
void SetDir ( CyString dir );
private:
CyString m_sFilename;
CyString m_sFile;
CDirIO m_sDirIO;
bool m_bOpened;
bool m_bBinary;
std::ifstream m_fId;
FILE *m_fIdOld;
size_t m_lSize;
};
#endif //__FILE_IO_H__