file_system.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #pragma once
  2. // file time
  3. struct file_time_t
  4. {
  5. int nyear;
  6. int nmonth;
  7. int nday;
  8. int nhour;
  9. int nminute;
  10. int nsecond;
  11. };
  12. class IFileSystem
  13. {
  14. public:
  15. virtual ~IFileSystem();
  16. // @brief 转换目录路径
  17. virtual const char* get_standard_path(const char* path, char* buffer, size_t size) = 0;
  18. // @brief 转换目录路径为完整路径
  19. virtual int get_full_pathname(const char* file_name, char* buffer, size_t size, char** file_part) = 0;
  20. // @brief 获得当前目录
  21. virtual bool get_current_dir(char* buffer, size_t size) = 0;
  22. // @brief 设置当前目录
  23. virtual bool set_current_dir(const char* path) = 0;
  24. // @brief 目录是否存在
  25. virtual bool dir_exists(const char* name) = 0;
  26. // @brief 创建目录
  27. virtual bool dir_create(const char* name) = 0;
  28. // @brief 删除目录
  29. virtual bool dir_delete(const char* name) = 0;
  30. // @brief 文件是否存在
  31. virtual bool file_exists(const char* name) = 0;
  32. // @brief 打开文件
  33. virtual void* file_open(const char* name, const char* mode) = 0;
  34. // @brief 删除文件
  35. virtual bool file_delete(const char* name) = 0;
  36. // @brief 关闭文件
  37. virtual bool file_close(void* fp) = 0;
  38. // @brief 获得文件大小
  39. virtual size_t get_file_size(const char* name) = 0;
  40. // @brief 获得文件日期
  41. virtual bool get_file_time(const char* name, file_time_t* file_time) = 0;
  42. // @brief 设置文件日期
  43. virtual bool set_file_time(const char* file_name, const file_time_t* file_time) = 0;
  44. // @brief 读取文件
  45. virtual size_t file_read(void* buf, size_t buf_len, void* fp) = 0;
  46. // @brief 写入文件
  47. virtual size_t file_write(const void* buf, size_t buf_len, void* fp) = 0;
  48. // @brief 刷新文件
  49. virtual int file_flush(void* fp) = 0;
  50. // @brief 是否文件结尾
  51. virtual bool file_eof(void* fp) = 0;
  52. // @brief 读取文件到缓冲区中
  53. virtual size_t file_readstring(const char* name, char* buffer, size_t buf_len) = 0;
  54. // @brief 加载dll
  55. virtual void* dll_open(const char* file_name) = 0;
  56. // @brief 获得加载dll的错误信息
  57. virtual const char* dll_error(char* buffer, size_t size) = 0;
  58. // @brief 获得加载dll的错误信息
  59. virtual const char* dll_name(const char* file_name, char* buffer, size_t size) = 0;
  60. // @brief 获得dll中的函数
  61. virtual void* dll_symbol(void* handle, const char* name) = 0;
  62. // @brief 关闭dll
  63. virtual bool dll_close(void* handle) = 0;
  64. // @brief 创建一个查询用的结构体
  65. virtual void* find_open() = 0;
  66. // @brief 查找文件
  67. virtual bool find_first(void* file_search, const char* path, const char* name) = 0;
  68. // @brief 查找文件
  69. virtual bool find_next(void* file_search) = 0;
  70. // @brief 查找文件
  71. virtual bool find_close(void* file_search) = 0;
  72. // @brief 是否目录
  73. virtual bool find_is_dir(void* file_search) = 0;
  74. // @brief 是否文件
  75. virtual bool find_is_file(void* file_search) = 0;
  76. // @brief 是否文件
  77. virtual const char* find_get_name(void* file_search) = 0;
  78. };
  79. inline IFileSystem::~IFileSystem() {}