zoukankan      html  css  js  c++  java
  • 深入.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"))

  • 相关阅读:
    [原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载
    凡事预则立,不预则废
    Linux下history命令详解---转载
    12 个最佳的免费网络监控工具--转载
    Linux curl命令参数详解--转载
    从源码角度深入分析ant
    SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转
    使用split进行分割时遇到特殊字符的问题
    ES查看segment大小
    Twitter的流处理器系统Heron——升级的storm,可以利用mesos来进行资源调度
  • 原文地址:https://www.cnblogs.com/why168888/p/4283619.html
Copyright © 2011-2022 走看看