#pragma once // file time struct file_time_t { int nyear; int nmonth; int nday; int nhour; int nminute; int nsecond; }; class IFileSystem { public: virtual ~IFileSystem(); // @brief 转换目录路径 virtual const char* get_standard_path(const char* path, char* buffer, size_t size) = 0; // @brief 转换目录路径为完整路径 virtual int get_full_pathname(const char* file_name, char* buffer, size_t size, char** file_part) = 0; // @brief 获得当前目录 virtual bool get_current_dir(char* buffer, size_t size) = 0; // @brief 设置当前目录 virtual bool set_current_dir(const char* path) = 0; // @brief 目录是否存在 virtual bool dir_exists(const char* name) = 0; // @brief 创建目录 virtual bool dir_create(const char* name) = 0; // @brief 删除目录 virtual bool dir_delete(const char* name) = 0; // @brief 文件是否存在 virtual bool file_exists(const char* name) = 0; // @brief 打开文件 virtual void* file_open(const char* name, const char* mode) = 0; // @brief 删除文件 virtual bool file_delete(const char* name) = 0; // @brief 关闭文件 virtual bool file_close(void* fp) = 0; // @brief 获得文件大小 virtual size_t get_file_size(const char* name) = 0; // @brief 获得文件日期 virtual bool get_file_time(const char* name, file_time_t* file_time) = 0; // @brief 设置文件日期 virtual bool set_file_time(const char* file_name, const file_time_t* file_time) = 0; // @brief 读取文件 virtual size_t file_read(void* buf, size_t buf_len, void* fp) = 0; // @brief 写入文件 virtual size_t file_write(const void* buf, size_t buf_len, void* fp) = 0; // @brief 刷新文件 virtual int file_flush(void* fp) = 0; // @brief 是否文件结尾 virtual bool file_eof(void* fp) = 0; // @brief 读取文件到缓冲区中 virtual size_t file_readstring(const char* name, char* buffer, size_t buf_len) = 0; // @brief 加载dll virtual void* dll_open(const char* file_name) = 0; // @brief 获得加载dll的错误信息 virtual const char* dll_error(char* buffer, size_t size) = 0; // @brief 获得加载dll的错误信息 virtual const char* dll_name(const char* file_name, char* buffer, size_t size) = 0; // @brief 获得dll中的函数 virtual void* dll_symbol(void* handle, const char* name) = 0; // @brief 关闭dll virtual bool dll_close(void* handle) = 0; // @brief 创建一个查询用的结构体 virtual void* find_open() = 0; // @brief 查找文件 virtual bool find_first(void* file_search, const char* path, const char* name) = 0; // @brief 查找文件 virtual bool find_next(void* file_search) = 0; // @brief 查找文件 virtual bool find_close(void* file_search) = 0; // @brief 是否目录 virtual bool find_is_dir(void* file_search) = 0; // @brief 是否文件 virtual bool find_is_file(void* file_search) = 0; // @brief 是否文件 virtual const char* find_get_name(void* file_search) = 0; }; inline IFileSystem::~IFileSystem() {}