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