IFileSystem.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using System.Collections.Generic;
  8. using System.IO;
  9. namespace GameFramework.FileSystem
  10. {
  11. /// <summary>
  12. /// 文件系统接口。
  13. /// </summary>
  14. public interface IFileSystem
  15. {
  16. /// <summary>
  17. /// 获取文件系统完整路径。
  18. /// </summary>
  19. string FullPath
  20. {
  21. get;
  22. }
  23. /// <summary>
  24. /// 获取文件系统访问方式。
  25. /// </summary>
  26. FileSystemAccess Access
  27. {
  28. get;
  29. }
  30. /// <summary>
  31. /// 获取文件数量。
  32. /// </summary>
  33. int FileCount
  34. {
  35. get;
  36. }
  37. /// <summary>
  38. /// 获取最大文件数量。
  39. /// </summary>
  40. int MaxFileCount
  41. {
  42. get;
  43. }
  44. /// <summary>
  45. /// 获取文件信息。
  46. /// </summary>
  47. /// <param name="name">要获取文件信息的文件名称。</param>
  48. /// <returns>获取的文件信息。</returns>
  49. FileInfo GetFileInfo(string name);
  50. /// <summary>
  51. /// 获取所有文件信息。
  52. /// </summary>
  53. /// <returns>获取的所有文件信息。</returns>
  54. FileInfo[] GetAllFileInfos();
  55. /// <summary>
  56. /// 获取所有文件信息。
  57. /// </summary>
  58. /// <param name="results">获取的所有文件信息。</param>
  59. void GetAllFileInfos(List<FileInfo> results);
  60. /// <summary>
  61. /// 检查是否存在指定文件。
  62. /// </summary>
  63. /// <param name="name">要检查的文件名称。</param>
  64. /// <returns>是否存在指定文件。</returns>
  65. bool HasFile(string name);
  66. /// <summary>
  67. /// 读取指定文件。
  68. /// </summary>
  69. /// <param name="name">要读取的文件名称。</param>
  70. /// <returns>存储读取文件内容的二进制流。</returns>
  71. byte[] ReadFile(string name);
  72. /// <summary>
  73. /// 读取指定文件。
  74. /// </summary>
  75. /// <param name="name">要读取的文件名称。</param>
  76. /// <param name="buffer">存储读取文件内容的二进制流。</param>
  77. /// <returns>实际读取了多少字节。</returns>
  78. int ReadFile(string name, byte[] buffer);
  79. /// <summary>
  80. /// 读取指定文件。
  81. /// </summary>
  82. /// <param name="name">要读取的文件名称。</param>
  83. /// <param name="buffer">存储读取文件内容的二进制流。</param>
  84. /// <param name="startIndex">存储读取文件内容的二进制流的起始位置。</param>
  85. /// <returns>实际读取了多少字节。</returns>
  86. int ReadFile(string name, byte[] buffer, int startIndex);
  87. /// <summary>
  88. /// 读取指定文件。
  89. /// </summary>
  90. /// <param name="name">要读取的文件名称。</param>
  91. /// <param name="buffer">存储读取文件内容的二进制流。</param>
  92. /// <param name="startIndex">存储读取文件内容的二进制流的起始位置。</param>
  93. /// <param name="length">存储读取文件内容的二进制流的长度。</param>
  94. /// <returns>实际读取了多少字节。</returns>
  95. int ReadFile(string name, byte[] buffer, int startIndex, int length);
  96. /// <summary>
  97. /// 读取指定文件。
  98. /// </summary>
  99. /// <param name="name">要读取的文件名称。</param>
  100. /// <param name="stream">存储读取文件内容的二进制流。</param>
  101. /// <returns>实际读取了多少字节。</returns>
  102. int ReadFile(string name, Stream stream);
  103. /// <summary>
  104. /// 读取指定文件的指定片段。
  105. /// </summary>
  106. /// <param name="name">要读取片段的文件名称。</param>
  107. /// <param name="length">要读取片段的长度。</param>
  108. /// <returns>存储读取文件片段内容的二进制流。</returns>
  109. byte[] ReadFileSegment(string name, int length);
  110. /// <summary>
  111. /// 读取指定文件的指定片段。
  112. /// </summary>
  113. /// <param name="name">要读取片段的文件名称。</param>
  114. /// <param name="offset">要读取片段的偏移。</param>
  115. /// <param name="length">要读取片段的长度。</param>
  116. /// <returns>存储读取文件片段内容的二进制流。</returns>
  117. byte[] ReadFileSegment(string name, int offset, int length);
  118. /// <summary>
  119. /// 读取指定文件的指定片段。
  120. /// </summary>
  121. /// <param name="name">要读取片段的文件名称。</param>
  122. /// <param name="buffer">存储读取文件片段内容的二进制流。</param>
  123. /// <returns>实际读取了多少字节。</returns>
  124. int ReadFileSegment(string name, byte[] buffer);
  125. /// <summary>
  126. /// 读取指定文件的指定片段。
  127. /// </summary>
  128. /// <param name="name">要读取片段的文件名称。</param>
  129. /// <param name="buffer">存储读取文件片段内容的二进制流。</param>
  130. /// <param name="length">要读取片段的长度。</param>
  131. /// <returns>实际读取了多少字节。</returns>
  132. int ReadFileSegment(string name, byte[] buffer, int length);
  133. /// <summary>
  134. /// 读取指定文件的指定片段。
  135. /// </summary>
  136. /// <param name="name">要读取片段的文件名称。</param>
  137. /// <param name="buffer">存储读取文件片段内容的二进制流。</param>
  138. /// <param name="startIndex">存储读取文件片段内容的二进制流的起始位置。</param>
  139. /// <param name="length">要读取片段的长度。</param>
  140. /// <returns>实际读取了多少字节。</returns>
  141. int ReadFileSegment(string name, byte[] buffer, int startIndex, int length);
  142. /// <summary>
  143. /// 读取指定文件的指定片段。
  144. /// </summary>
  145. /// <param name="name">要读取片段的文件名称。</param>
  146. /// <param name="offset">要读取片段的偏移。</param>
  147. /// <param name="buffer">存储读取文件片段内容的二进制流。</param>
  148. /// <returns>实际读取了多少字节。</returns>
  149. int ReadFileSegment(string name, int offset, byte[] buffer);
  150. /// <summary>
  151. /// 读取指定文件的指定片段。
  152. /// </summary>
  153. /// <param name="name">要读取片段的文件名称。</param>
  154. /// <param name="offset">要读取片段的偏移。</param>
  155. /// <param name="buffer">存储读取文件片段内容的二进制流。</param>
  156. /// <param name="length">要读取片段的长度。</param>
  157. /// <returns>实际读取了多少字节。</returns>
  158. int ReadFileSegment(string name, int offset, byte[] buffer, int length);
  159. /// <summary>
  160. /// 读取指定文件的指定片段。
  161. /// </summary>
  162. /// <param name="name">要读取片段的文件名称。</param>
  163. /// <param name="offset">要读取片段的偏移。</param>
  164. /// <param name="buffer">存储读取文件片段内容的二进制流。</param>
  165. /// <param name="startIndex">存储读取文件片段内容的二进制流的起始位置。</param>
  166. /// <param name="length">要读取片段的长度。</param>
  167. /// <returns>实际读取了多少字节。</returns>
  168. int ReadFileSegment(string name, int offset, byte[] buffer, int startIndex, int length);
  169. /// <summary>
  170. /// 读取指定文件的指定片段。
  171. /// </summary>
  172. /// <param name="name">要读取片段的文件名称。</param>
  173. /// <param name="stream">存储读取文件片段内容的二进制流。</param>
  174. /// <param name="length">要读取片段的长度。</param>
  175. /// <returns>实际读取了多少字节。</returns>
  176. int ReadFileSegment(string name, Stream stream, int length);
  177. /// <summary>
  178. /// 读取指定文件的指定片段。
  179. /// </summary>
  180. /// <param name="name">要读取片段的文件名称。</param>
  181. /// <param name="offset">要读取片段的偏移。</param>
  182. /// <param name="stream">存储读取文件片段内容的二进制流。</param>
  183. /// <param name="length">要读取片段的长度。</param>
  184. /// <returns>实际读取了多少字节。</returns>
  185. int ReadFileSegment(string name, int offset, Stream stream, int length);
  186. /// <summary>
  187. /// 写入指定文件。
  188. /// </summary>
  189. /// <param name="name">要写入的文件名称。</param>
  190. /// <param name="buffer">存储写入文件内容的二进制流。</param>
  191. /// <returns>是否写入指定文件成功。</returns>
  192. bool WriteFile(string name, byte[] buffer);
  193. /// <summary>
  194. /// 写入指定文件。
  195. /// </summary>
  196. /// <param name="name">要写入的文件名称。</param>
  197. /// <param name="buffer">存储写入文件内容的二进制流。</param>
  198. /// <param name="startIndex">存储写入文件内容的二进制流的起始位置。</param>
  199. /// <returns>是否写入指定文件成功。</returns>
  200. bool WriteFile(string name, byte[] buffer, int startIndex);
  201. /// <summary>
  202. /// 写入指定文件。
  203. /// </summary>
  204. /// <param name="name">要写入的文件名称。</param>
  205. /// <param name="buffer">存储写入文件内容的二进制流。</param>
  206. /// <param name="startIndex">存储写入文件内容的二进制流的起始位置。</param>
  207. /// <param name="length">存储写入文件内容的二进制流的长度。</param>
  208. /// <returns>是否写入指定文件成功。</returns>
  209. bool WriteFile(string name, byte[] buffer, int startIndex, int length);
  210. /// <summary>
  211. /// 写入指定文件。
  212. /// </summary>
  213. /// <param name="name">要写入的文件名称。</param>
  214. /// <param name="stream">存储写入文件内容的二进制流。</param>
  215. /// <returns>是否写入指定文件成功。</returns>
  216. bool WriteFile(string name, Stream stream);
  217. /// <summary>
  218. /// 写入指定文件。
  219. /// </summary>
  220. /// <param name="name">要写入的文件名称。</param>
  221. /// <param name="filePath">存储写入文件内容的文件路径。</param>
  222. /// <returns>是否写入指定文件成功。</returns>
  223. bool WriteFile(string name, string filePath);
  224. /// <summary>
  225. /// 将指定文件另存为物理文件。
  226. /// </summary>
  227. /// <param name="name">要另存为的文件名称。</param>
  228. /// <param name="filePath">存储写入文件内容的文件路径。</param>
  229. /// <returns>是否将指定文件另存为物理文件成功。</returns>
  230. bool SaveAsFile(string name, string filePath);
  231. /// <summary>
  232. /// 重命名指定文件。
  233. /// </summary>
  234. /// <param name="oldName">要重命名的文件名称。</param>
  235. /// <param name="newName">重命名后的文件名称。</param>
  236. /// <returns>是否重命名指定文件成功。</returns>
  237. bool RenameFile(string oldName, string newName);
  238. /// <summary>
  239. /// 删除指定文件。
  240. /// </summary>
  241. /// <param name="name">要删除的文件名称。</param>
  242. /// <returns>是否删除指定文件成功。</returns>
  243. bool DeleteFile(string name);
  244. }
  245. }