离线保存数据

来源:互联网 发布:linux 禁止访问外网 编辑:程序博客网 时间:2024/05/22 03:15

需要引用

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());      }
0 0