• 深入.net(文件操作)


    自己进行数据的“持久化操作”:

            ----- 数据持久化技术:程序还运行过程中,所有的“中间数据”(加工或处理过程中数据)都存放在内存中,但内存的特点是掉电后数据无法保存,所以需要有种技术能够将存放在内存中数据进行“永久保存”,这样的技术我们称为持久化技术。

     

    以“文件”的方式对数据进行“持久化保存”:

            方式一:直接将内存中的数据,搬运到磁盘文件中  ------ 二进制文件

            方式二:将内存中的数据进行“逻辑转意”为字符,然后再写入到文件 ----- 文本文件

     

    “文本文件”读写操作:

           方式一:(五个步骤,使用FileStream、StreamReader[StreamWrite])

                              //1、创建 “文件流” 对象

                        FileStream fs = new FileStream(filePath, FileMode.Create);

                        //2、创建 “文件读写器”对象

                        StreamWriter sw = new StreamWriter(fs);

                        //3、读写操作

                        sw.Write(this.textBox1.Text);

                        //4、关闭“读写器”

                        sw.Close();

                        //5、关闭“文件流”

                        fs.Close();

          方式二:使用  Using 简化代码(减少关闭的代码和步骤)

                              //1、创建 “文件流” 对象

                        using (FileStream fs = new FileStream(filePath, FileMode.Create))

                        {

                            //2、创建 “文件读写器”对象

                            using (StreamWriter sw = new StreamWriter(fs))

                            {

                                //3、读写操作

                                sw.Write(this.textBox1.Text);

                            }

     

                        }

     

         方式三:直接使用StreamReader、StreamWrite

                        //1、创建 “文件读写器”对象

                            using (StreamWriter sw = new StreamWriter(“D:学员资料.txt”))

                            {

                                //2、读写操作

                                sw.Write(this.textBox1.Text);

                            }

     

    使用“文本文件”实现数据持久化,一来当数据庞大且关系复杂时,其转换为“文本”的过程繁琐容易出错,开发效率低!因此,我们可以尝试将“数据对象”整个的端到磁盘的文件中! ------ 使用二进制文件保存数据【序列化技术】

               序列化操作步骤:

                        1、对“待处理”数据进行“预处理”:将类定义为“可序列化”【要求其所有的家族都是可序列化】

                         2、创建“序列化”操作对象:

                                System.Runtime.Serialization.Formatters.Binary.BinaryFormatter

                         3、创建传输用“流”对象:

                                 FileStream fs = new FileStream();

                         4、序列化操作

                        //创建 “流对象”  (文件流) --- 负责运输

                    using (FileStream fs = new FileStream(@"c:mydata", FileMode.Open))

                    {

                        //创建 “序列化对象”        --- 负责对象【打包】

                        BinaryFormatter bf = new BinaryFormatter();

                        //bf.Serialize(fs, _stuList1);  序列化方法

                        _stuList2 = bf.Deserialize(fs) as List<Student>;  反序列化方法

                    }

     

                                     [Serializable]  可序列化标识代码

     

     

     

     

     

     

     

     

    小贴士:

             文本文件读写,最容易出现的错误就是“乱码”:

                     乱码的出现,是因为您读取和写入时,所采用的“字符编码规则”不一致!

                     注意:

                              读取自己文件 --- 应该采用一致“编码规则”

                              读取第三方文件  ---- 应该采用与其对应“编码规则”,或者,直接使用本机的默认编码规则

                               【设置方式:直接设置到读写器上】

                                 StreamReader sr = new StreamReader(fs,Encoding.Default);

                                  StreamReader sr = new StreamReader(fs,Encoding.UTF8)

                                  StreamReader sr = new StreamReader(fs,Encoding.GetEncoding("gb2312"))

  • 相关阅读:
    医院产品演变畅想
    2014-1-19
    更新一下blog
    tostring的自动调用
    解决evernote更新报错问题
    健身日记
    跑步计划
    [转载]offsetHeight , clientHeight, scrollHeight 区别
    做一个院友网站杂记
    查好友摇一摇功能的感受
  • 原文地址:https://www.cnblogs.com/why168888/p/4283619.html
Copyright © 2020-2023  润新知