diff --git a/MacroFile.md b/MacroFile.md index cec49db..4db9bab 100644 --- a/MacroFile.md +++ b/MacroFile.md @@ -2,62 +2,86 @@ 文件宏包含预设常用的文件写入,读取操作,并自动解决文件不存在的问题,通过返回布尔状态来快速判断解决。 -原始api中,仅包含一层简单的c#文件处理封装,无法适配unity其他平台情况,这些api已经被标记为过时,但你仍然可以继续使用他们。 -新版中,添加了对多平台的支持: +文件系统基于多态行为模式构建,使用 `CrossPlatformFileHandle.ActiveHandle` 获取当前系统上激活的文件管理器句柄,所有文件系统都可以使用从文本,字节码的方式中同步读取读写,异步读写,总共八种模式。 -* 增加了`CrossPlatformFileHandle`文件句柄,用于处理多平台的文件写入,加载的基类。 - 使用时,通过`CrossPlatformFileHandle.ActiveHandle`来获得当前平台自动对应的文件句柄,其中包括了一组同步和一组异步的读写方法,来对目标地址进行访问。 - 下面是一个示例: - ``` - // ==== 同步读取 ==== - CrossPlatformFileHandle.ActiveFileHandle.ReadTextFromFile("absolute file path", out string content); +* ReadTextFromFile:同步读 +* ReadBytesFormFile:同步读字节码 +* WriteTextIntoFile:同步写 +* WriteByteIntoFile:同步写字节码 +* AsyncReadTextFromFile:异步读 +* AsyncReadBytesFromFile:异步读字节码 +* AsyncWriteTextIntoFile:异步写 +* AsyncWriteBytesIntoFile:异步写字节码 - // ==== 同步写入 ==== - CrossPlatformFileHandle.ActiveFileHandle.WriteTextIntoFile("absolute file path", string content); +所有文件操作函数都使用绝对路径,所以还需要路径处理函数: - // ==== 异步读取 ==== - var isCompleteRead = await CrossPlatformFileHandle.ActiveFileHandle.AsyncReadTextFromFile("absolute file path", - s => - { - // 成功读取文件 - }, - s => - { - // 读取失败,原因是 s - Debug.ErrorLog(s); - }); +* CombinePath:直接拼接两个路径 +* CombineStreamingAssets:拼接到streamingAssets路径 +* ~其他路径类似 +* CombineCustomRelativePath:拼接到预定义的路径上 - // ==== 异步写入 ==== - var isCompleteWrite = await CrossPlatformFileHandle.ActiveFileHandle.AsyncWriteTextIntoFile("absolute file path", - null, // 成功写入文件,但是无需处理 - null); // 写入失败,但是无需处理 +文件句柄仅仅只是为了处理一些文件读写操作的,所以暂时还没有提供比如检查文件是否存在的逻辑,所有功能都是围绕上述8个文件方法实现的。 - // 异步方法包含回调函数处理,也可通过返回布尔值判断文件写入是否成功。 - ``` - 同时,文件句柄也提供了相对路径拼接: - ``` - // 返回steamingAssets下的myFile.json文件路径 - CrossPlatformFileHandle.ActiveFileHandle.CombineStreamingAssets("myFile.json"); - ``` +下面是一个示例: +``` +// ==== 同步读取 ==== +CrossPlatformFileHandle.ActiveFileHandle.ReadTextFromFile("absolute file path", out string content); +// ==== 同步写入 ==== +CrossPlatformFileHandle.ActiveFileHandle.WriteTextIntoFile("absolute file path", string content); +// ==== 异步读取 ==== +var isCompleteRead = await CrossPlatformFileHandle.ActiveFileHandle.AsyncReadTextFromFile("absolute file path", +s => +{ + // 成功读取文件 +}, +s => +{ + // 读取失败,原因是 s + Debug.ErrorLog(s); +}); +// ==== 异步写入 ==== +var isCompleteWrite = await CrossPlatformFileHandle.ActiveFileHandle.AsyncWriteTextIntoFile("absolute file path", +null, // 成功写入文件,但是无需处理 +null); // 写入失败,但是无需处理 +// 异步方法包含回调函数处理,也可通过返回布尔值判断文件写入是否成功。 +``` +同时,文件句柄也提供了相对路径拼接: +``` +// 返回steamingAssets下的myFile.json文件路径 +CrossPlatformFileHandle.ActiveFileHandle.CombineStreamingAssets("myFile.json"); +``` -* 添加了`XericSerializerFormatter`序列化器,用于通配处理多种序列化器目标。 - 目前默认提供了 Json格式化 和 bin格式化 。 - 下面展示如何使用: - ``` - List obj = new List() { 1, 2, 3}; - // 序列化目标 - var content = JsonSerializerFormatter.formatter.Serializer(obj); - // 反序列化目标 - obj = JsonSerializerFormatter.Deserializer.Serializer(content); - ``` - - 为了方便使用,文件句柄支持填入序列化器来实现更多的格式: - ``` - // 类型太长了可以使用声名简化 - using static XericLibrary.Runtime.MacroLibrary.MacroFile.CrossPlatformFileHandle; - using static XericLibrary.Runtime.MacroLibrary.MacroFile.JsonSerializerFormatter; +添加了`XericSerializerFormatter`序列化器,用于通配处理多种序列化器目标。 +目前默认提供了 Json格式化 和 bin格式化 。 +下面展示如何使用: +``` +List obj = new List() { 1, 2, 3}; +// 序列化目标 +var content = JsonSerializerFormatter.formatter.Serializer(obj); +// 反序列化目标 +obj = JsonSerializerFormatter.Deserializer.Serializer(content); +``` - ActiveFileHandle.AsyncWriteXIntoFile( - ActiveFileHandle.CombineStreamingAssets("myFile.json"), - uriConfig, null, s => Debug.LogError(s), formatter); - ``` +为了方便使用,文件句柄支持填入序列化器来实现更多的格式: +``` +// 类型太长了可以使用声名简化 +using static XericLibrary.Runtime.MacroLibrary.MacroFile.CrossPlatformFileHandle; +using static XericLibrary.Runtime.MacroLibrary.MacroFile.JsonSerializerFormatter; + +ActiveFileHandle.AsyncWriteXIntoFile( + ActiveFileHandle.CombineStreamingAssets("myFile.json"), + uriConfig, null, s => Debug.LogError(s), formatter); +``` + + +下面这些函数api已经过时,他们不会因为过时而被移除,但是也不建议使用。 +* GetStreamingFile:获取streamingAssets文件目录 +* GetDataPathFile:获取DataPath文件目录 +* GetPersistentDataPath:获取PersistentDataPath文件目录 +* WirteFile:直接向absFilePath的文件写入writeText,如果文件不存在就创建这个文件 +* ReadFile:读取absFilePath的文件 +* FileExists:检查 fileName 文件是否存在 + +下面这些函数api已经过时,并且计划移除 +* SaveObjectToJsonFile:直接将文件序列化为json并保存到absfilePath +* ReadObjectFormJsonFile:直接读取absfilePath文件并序列化为对象 \ No newline at end of file