1 #ifndef __FILESYS_HPP__ 2 #define __FILESYS_HPP__ 7 #if defined(_MSC_VER) || defined(WIN32) 17 #if defined(_MSC_VER) || defined(WIN32) 23 String const LineSep =
"\n";
24 String const PathEnvSep =
":";
148 #define LOG(s) winux::WriteLog(s) 149 #define BIN_LOG(d,s) winux::WriteBinLog((d),(s)) 156 #define interface struct 180 #if defined(_MSC_VER) || defined(WIN32) 181 WIN32_FIND_DATA _wfd;
194 String getFullPath()
const;
196 String getRealPath()
const;
211 virtual bool open(
String const & filename,
String const & mode );
213 virtual bool close();
215 virtual size_t read(
void * buf,
size_t size );
217 virtual size_t write(
void const * data,
size_t size );
219 virtual size_t write(
Buffer const & buf );
221 virtual bool rewind();
223 virtual bool seek(
offset_t offset );
225 virtual size_t tell();
229 virtual int puts(
String const & str );
233 virtual size_t size();
235 virtual void * buffer(
size_t * size );
256 virtual bool open(
String const & filename,
String const & mode )
override;
257 virtual bool close()
override;
258 virtual size_t read(
void * buf,
size_t size )
override;
259 virtual size_t write(
void const * data,
size_t size )
override;
260 virtual size_t write(
Buffer const & buf )
override;
261 virtual bool rewind()
override;
262 virtual bool seek(
offset_t offset )
override;
263 virtual size_t tell()
override;
264 virtual String getLine()
override;
265 virtual int puts(
String const & str )
override;
266 virtual bool eof()
override;
267 virtual size_t size()
override;
268 virtual void * buffer(
size_t * size )
override;
272 operator bool()
const {
return _fp != NULL; }
291 BlockOutFile(
String const & filename,
bool isTextMode =
true,
size_t blockSize = 1048576 );
294 virtual size_t write(
void const * data,
size_t size )
override;
295 virtual size_t write(
Buffer const & buf )
override;
296 virtual int puts(
String const & str )
override;
317 virtual bool eof()
override;
324 #endif //__FILESYS_HPP__ XString< char > AnsiString
String PathWithSep(String const &path)
路径分隔符整理
StringArray _blockFiles
要加载的分块文件
String _filetitle
文件标题 filename
bool FileTime(String const &filename, time_t *ctime, time_t *mtime, time_t *atime)
获取文件时间
bool IsAbsPath(String const &path)
判断是否为绝对路径
void FolderData(String const &path, StringArray *fileArr, StringArray *subFolderArr, int sortType=0)
获取文件夹中的文件和子文件夹。sortType:0结果不排序 1正序 2反序
String _basename
文件名 filename.txt
bool FilePutContents(String const &filename, AnsiString const &content, bool textMode=true)
把AnsiString内容写入文件,textMode表示是否为文本模式
bool SetCurrentDir(String const &path)
设置当前工作目录
time_t FileCTime(String const &filename)
获取文件创建时间
FileSysError(int errType, AnsiString const &s)
String NormalizePath(String const &path)
使路径规则化(末尾不带路径分割符)
String const & getName() const
取得文件名
String FilePath(String const &fullPath, String *fileName=NULL)
获取路径名(末尾不含目录分隔符)
String const & getPath() const
取得路径
size_t CommonDelete(String const &path)
通用删除,删除文件夹和文件,返回删除的文件夹和文件数
String _filetitle
文件标题 filename
bool MakeDirExists(String const &path, int mode=0755)
确保目录路径的存在性,如果不存在则创建。
#define DISABLE_OBJECT_COPY(clsname)
bool _autoload
当以读取模式打开时,是否自动载入数据到缓冲区
String PathNoSep(String const &path)
time_t FileATime(String const &filename)
获取文件访问时间
void WriteLog(String const &s)
日志
String _dirname
目录名 path/to
String _basename
文件名 filename.txt
缓冲区,表示内存中一块二进制数据(利用malloc/realloc进行内存分配)
bool FilePutContentsEx(String const &filename, Buffer const &content, bool textMode)
把Buffer内容写入文件,textMode表示是否为文本模式
String RealPathEx(String const &path, String const &workDirAbsPath)
根据指定工作目录计算绝对路径,不会检查存在性
String CombinePath(String const &dirPath, String const &fileName)
把一个目录路径和一个文件名组合成一个新路径
bool DetectPath(String const &path, bool *isDir=NULL)
探测一个路径是存在还是不存在,是目录还是文件
size_t EnumFiles(String const &path, Mixed const &ext, StringArray *arrFiles, bool isRecursive=false)
在指定路径下枚举指定扩展名的文件
bool IsDir(String const &path)
判断是否是一个目录
#define WINUX_FUNC_DECL(ret)
String FileTitle(String const &fileName, String *extName=NULL)
获取文件标题
time_t FileMTime(String const &filename)
获取文件修改时间
String GetCurrentDir(void)
返回当前工作目录(末尾不含目录分隔符)
ulong FileSize(String const &filename)
获取文件大小
String RealPath(String const &path)
根据当前工作目录计算绝对路径,不会检查存在性
String GetExecutablePath(void)
获取可执行文件的全路径
size_t _loadedSize
实际加载的字节大小,这和文件大小不一定相同
AnsiString FileGetContents(String const &filename, bool textMode=true)
载入文件内容为一个AnsiString,textMode表示是否为文本模式
size_t _fileSize
文件的字节大小,这和数据加载大小不一定相同
String const PathEnvSep
PATH环境变量路径分割符
uint64 FileSize64(String const &filename)
获取文件大小(大于4GB的文件)
XStringArray< tchar > StringArray
bool FileTouch(String const &filename, time_t time=(time_t)-1, time_t atime=(time_t)-1)
更新文件修改时间,访问时间
size_t loadedSize() const
String _dirname
目录名 path/to
Buffer FileGetContentsEx(String const &filename, bool textMode)
载入文件内容为一个Buffer,textMode表示是否为文本模式
void WriteBinLog(void const *data, size_t size)
二进制日志