需要引用
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
/// <summary>
/// 离线保存
/// </summary>
private void SaveOffLine()
{
try
{
DataTable dt = new DataTable();
dt.Columns.Add("学科",typeof(string));
dt.Columns.Add("分数",typeof(string));
dt.Rows.Add("语文","90");
dt.Rows.Add("数学","95");
dt.Rows.Add("英语","96");
//先建立UserData文件夹
if (!Directory.Exists(Application.StartupPath + "\\OfflineData"))
{
DirectoryInfo newDirInfo = Directory.CreateDirectory(Application.StartupPath + "\\OfflineData");
//newDirInfo.Attributes = FileAttributes.Hidden;//设置隐藏属性
}
//再存放病人对应的数据
if (!Directory.Exists(Application.StartupPath + "\\OfflineData\\" + "01"))
{
Directory.CreateDirectory(Application.StartupPath + "\\OfflineData\\" + "01");
}
string _savePath = Application.StartupPath + "\\OfflineData\\" + "01" + "\\" + "成绩" + ".dat";
using (FileStream fs = new FileStream(_savePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
BinaryFormatter binData = new BinaryFormatter();
binData.Serialize(fs, dt);
}
MessageBox.Show(this, "离线数据保存成功!", "系统提示");
}
catch (Exception ex)
{
MessageBox.Show(this, "离线保存失败!\r\n" + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
注意:Application.StartupPath 指的是 当前项目的生成路径,下图
解析存储的文件
/// <summary>
/// 解析文件
/// </summary>
private void analyticBakFile()
{
DataSet ds = new DataSet();
string _strPath = Application.StartupPath + "\\OfflineData\\" + "01";
int i=0;
foreach (string iFile in Directory.GetFiles(_strPath))
{
FileStream fs = new FileStream(iFile, FileMode.Open, FileAccess.Read);
BinaryFormatter binFormat = new BinaryFormatter();
DataTable _Data = (DataTable)binFormat.Deserialize(fs);
_Data.TableName = "dt" + i.ToString(); // 默认 TableName 为Table1;
if (_Data != null)
{
ds.Tables.Add(_Data);
}
fs.Close();
i++;
}
MessageBox.Show(ds.Tables.Count.ToString());
}