My Project
FileUtils.h
1 #pragma once
2 #include "FileData.h"
3 #include "FileHandle.h"
4 #include <map>
5 
6 namespace ParaEngine
7 {
8  class CSearchResult;
9 
12  {
13  enum FileMode{
14  ModeNoneExist,
15  ModeFile,
16  ModeFileInZip,
17  ModeDirectory,
18  ModeLink,
19  ModeSocket,
20  ModeNamedPipe,
21  ModeCharDevice,
22  ModeBlockDevice,
23  ModeOther,
24  };
25  public:
26  CParaFileInfo();
27 
28  std::string m_sFullpath;
29  FileMode m_mode;
30  DWORD m_dwFileAttributes;
31  time_t m_ftCreationTime;
32  time_t m_ftLastAccessTime;
33  time_t m_ftLastWriteTime;
34  DWORD m_dwFileSize;
35  };
36 
38  class CFileUtils
39  {
40  public:
41 
42  /* remove the starting and trailing spaces ' ' from the string */
43  static void TrimString(std::string & str);
44 
45  static bool FileExistRaw(const char* filename);
46 
48  static bool AddDiskSearchPath(const std::string& sFile, bool nFront = false);
49 
51  static bool FileExist(const char* filename);
52 
56  static bool FileExist2(const char* filename, std::string * pDiskFile = NULL);
57 
63  static void MakeFileNameFromRelativePath(char * output, const char* filename, const char* relativePath);
64 
71  static bool MoveFile(const char* src, const char* dest);
72 
81  static bool CopyFile(const char* src, const char* dest, bool bOverride);
82 
83 
92  static std::string GetParentDirectoryFromPath(const std::string& sfilename, int nParentCounts = 0);
93 
97  static bool MakeDirectoryFromFilePath(const char * filename);
98 
103  static bool SaveBufferToFile(const std::string& filename, bool bReplace, char* buffer, DWORD nBufSize);
104 
106  static bool DeleteFile(const char* filename);
107 
109  static int DeleteDirectory(const char* dirname);
110 
117  static int DeleteFiles(const std::string& sFilePattern, bool bSecureFolderOnly = true, int nSubFolderCount=10);
118 
120  static std::string GetWritableFullPathForFilename(const std::string& filename);
122  static std::string GetFileName(const std::string& sFilePath);
123 
128  static FileData GetDataFromFile(const char* filename);
129 
130  static std::string GetStringFromFile(const std::string& filename);
131 
133  static bool GetFileInfo(const char* filename, CParaFileInfo& fileInfo);
134 
139  static FileData GetResDataFromFile(const std::string& filename);
140 
142  static bool DoesResFileExist(const std::string& filename);
143 
149  static void AddEmbeddedResource(const char* name, const char* buffer, size_t nSize);
150 
152  static std::string GetFullPathForFilename(const std::string &filename);
153 
163  static bool IsAbsolutePath(const std::string& path);
164 
166  static int GetFileSize(const char* sFilePath);
167 
169  static FileHandle OpenFile(const char* sFilePath, bool bRead = false, bool bWrite=true);
170 
181  static bool SetFilePointer(FileHandle& fileHandle, int lDistanceToMove, int dwMoveMethod);
182 
184  static int GetFilePosition(FileHandle& fileHandle);
185 
192  static bool SetEndOfFile(FileHandle& fileHandle);
193 
197  static int WriteBytes(FileHandle& fileHandle, const void* src, int bytes);
198 
202  static int ReadBytes(FileHandle& fileHandle, void* dest, int bytes);
203 
205  static void CloseFile(FileHandle& fileHandle);
206 
208  static std::string GetInitialDirectory();
209 
214  static const std::string& GetWritablePath();
215 
217  static void SetWritablePath(const std::string& writable_path);
218 
220  static void FindDiskFiles(CSearchResult& result, const std::string& sRootPath, const std::string& sFilePattern, int nSubLevel);
221  public:
222  // this is usually /mnt/sdcard/XXX/ in android.
223  static std::string s_writepath;
224 
225  private:
227  struct EmbeddedResource
228  {
229  public:
230  EmbeddedResource():resource_data(0), data_len(0) {}
231  EmbeddedResource(const char* start, size_t len) : resource_data(start), data_len(len) {}
232 
233  const char * const &data() const { return resource_data; }
234  const size_t &size() const { return data_len; }
235 
236  const char *begin() const { return resource_data; }
237  const char *end() const { return resource_data + data_len; }
238 
239  std::string toString() { return std::string(data(), size()); }
240 
241  private:
242  const char* resource_data;
243  size_t data_len;
244  };
245 
246  // all embedded resources
247  static std::map<std::string, EmbeddedResource> s_all_resources;
248  };
249 
250 
251 }
a file handle in a Archive
Definition: FileHandle.h:13
file information.
Definition: FileUtils.h:11
different physics engine has different winding order.
Definition: EventBinding.h:32
Definition: FileData.h:6
file platform related API and helper functions
Definition: FileUtils.h:38
it represents the search result.
Definition: FileSearchResult.h:24