版权声明:快乐源于分享,转载请附链接,,, https://blog.csdn.net/Czhenya/article/details/81531656
以二进制实现本地数据保存和读取,,,
项目中要存个本地文件,本来想使用Json 的,,可是怎么也没实现了,Json 好像只能存储string类型 -->(Dictionary<string, string> )1,,,没做出来,觉得XML读取费劲,最后决定使用二进制的形式存储为 .txt格式的,,,嗯,效果还可以,,,分享一下…
下面是存储和读取的代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using UnityEngine;
using UnityEngine.UI;
public class LobbyMiddleRightView : MonoBehaviour {
public GameObject DownLoadObj;
private string filePath;
private LocalDataObject localDataObject = new LocalDataObject();
/// <summary>
/// 初始化
/// </summary>
public void Init()
{
filePath = Application.dataPath + "/StreamingFile" + "/LocalData.txt";
localDataObject.iconPos.Add(1, "AAA");
localDataObject.iconPos.Add(2, "BBB");
localDataObject.iconPos.Add(3, "CCC");
localDataObject.iconPos.Add(4, "DDD");
localDataObject.iconPos.Add(5, "EEE");
localDataObject.iconPos.Add(6, "FFF");
localDataObject.isDownLoad.Add(1,true);
localDataObject.isDownLoad.Add(2,true);
localDataObject.isDownLoad.Add(3,true);
localDataObject.isDownLoad.Add(4,true);
localDataObject.isDownLoad.Add(5,true);
localDataObject.isDownLoad.Add(6,true);
}
/// <summary>
/// 以二进制形式 保存到本地
/// </summary>
private void Save()
{
//二进制格式化程序
BinaryFormatter bf = new BinaryFormatter();
//创建流文件
FileStream fileStream = File.Create(filePath);
//序列化
bf.Serialize(fileStream, localDataObject);
fileStream.Close();
if (File.Exists(filePath))
{
Debug.Log("保存成功");
}
}
/// <summary>
/// 读取本地文件
/// </summary>
private void Read()
{
if (File.Exists(filePath))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream filestream = File.Open(filePath, FileMode.Open);
LocalDataObject localDataObject = (LocalDataObject)bf.Deserialize(filestream);
filestream.Close();
Debug.Log("本地文件读取成功: ");
foreach (var key in localDataObject.iconPos.Keys)
{
Debug.Log(key + " "+ localDataObject.iconPos[key]);
}
foreach (var key in localDataObject.isDownLoad.Keys)
{
Debug.Log(key + " " + localDataObject.isDownLoad[key]);
}
}
else
{
Debug.Log("不存在存档");
}
}
}
/// <summary>
/// 本地数据对象
/// </summary>
[Serializable]
public class LocalDataObject
{
//使用Json,只能存储string类型 -->(Dictionary<string, string> )
public Dictionary<int, string> iconPos = new Dictionary<int, string>();
public Dictionary<int, bool> isDownLoad = new Dictionary<int, bool>();
}
可能有别的方式实现我没找到吧 … ↩︎