Loading

深入.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"))

 

posted @ 2015-02-10 13:19  浩友  阅读(134)  评论(0编辑  收藏  举报