1.NET程序设计杨剑yang_jian03@126.com2C#程序设计语言第一章:.NET与C#概述第二章:面向对象程序设计第三章:集合、索引器与泛型第四章:程序调试与异常处理第五章:基于事件驱动的程序设计第六章:Windows程序设计技术第七章:C#数据库编程技术第八章:文件操作与编程技术第九章:多线程和异步编程第八章文件操作与编程技术4本章目标了解XML的概念和及其基本的语法规则了解常用的操作流的类的功能掌握文本文件或二进制文件读写方法掌握操作XML文档的编程方法,包括创建XML文档、查询和编辑XML数据等为什么需要操作文件如何使得程序中的数据持久化?用数据库实现成本太大使用于大批量数据使用文件对数据进行持久化,用程序操作文件文件的应用场合计算机上有多种文件可以保存数据这些文件你都熟悉吧?如何读写文本文件读写一个文件的步骤:创建一个文件流创建相应的读写器(readerandwriter)执行读写操作关闭读写器(readerandwriter)关闭文件流12345将数据写入文本文件FileStreammyfs=newFileStream(path,FileMode.Create,FileAccess.Write);StreamWritermySw=newStreamWriter(myfs);mySw.Write(content);mySw.Close();myfs.Close();创建一个文件流创建写入器,写入一个流写入操作关闭文件流与写入器创建文件流FileStreammyfs=newFileStream(path,FileMode.Create);指定文件路径FileMode枚举Create:创建一个新文件Open:指定打开现有文件CreateNew:新建一个文件指定如何打开文件需要引入System.IO命名空间---提供文件操作的类文件流用于(FileStream类)读写文件如果文件存在、则改写旧文件如果文件存在会发生异常创建写入器文本文件写入器:StreamWriterStreamWritermySw=newStreamWriter(myfs);mySw.Write(content);//mySw.WriteLine(content);mySw.Close();传入文件流写入方法关闭写入器文本文件读取器:StreamReader写入一行数据的方法StreamReadermySr=newStreamReader(myfs);content=mySr.ReadToEnd();//content=mySr.ReadLine();mySr.Close();传入文件流读取到文件末尾读取一行关闭读取器读取文本文件读取文本文件:FileStreammyfs=newFileStream(path,FileMode.Open,FileAccess.Read);StreamReadermySr=newStreamReader(myfs);content=mySr.ReadToEnd();txtContent.Text=content;mySr.Close();myfs.Close();创建一个文件流创建一个读取器将流从当前位置读到末尾关闭文本文件不使用文件流的读写StreamWriter允许直接将字符串写入文件StreamWritermySw=newStreamWriter(path);mySw.Write(content);mySw.Close();直接指定路径StreamReader允许直接读取文件内容StreamReadermySr=newStreamReader(path);content=mySr.ReadToEnd();txtContent.Text=content;mySr.Close();直接指定路径自动创建文件读写二进制文件BinaryReader和BinaryWriter什么是序列化学生对象学号姓名存储介质存储序列化是将对象的状态存储到特定存储介质中的过程…性别使用序列化要存储的对象标记为可序列化,包括他的父类和属性的类fileStream=newFileStream(“student.dat,FileMode.Create);BinaryFormatterbf=newBinaryFormatter();bf.Serialize(fileStream,stu);[Serializable]pulicclassStudent使用二进制方式存储对象二进制格式化器将对象以二进制方式格式化为流Serialize(StreamserializationStream,Objectgraph)流对象Serialize的用法:序列化的过程格式化程序对象可否序列化子类成员可否序列化将对象格式化写入存储介质异常退出序列化对象中的子类成员YYNN反序列化把Student对象存储成文件,怎么取出来呢?读取反序列化则是从特定存储介质中的数据重新构建对象的过程存储介质student对象学号姓名…性别数据转换为对象使用反序列化将序列化好的Profile数据反序列化为对象fileStream=newFileStream(student.dat,FileMode.Open);BinaryFormatterbf=newBinaryFormatter();Profile=(Student)bf.Deserialize(fileStream);将指定流反序列化类型转换publicObjectDeserialize(StreamserializationStream)Deserialize的用法:流对象需要类型转换文件操作文件操作还包括拷贝、移动、删除等等.NET提供一个File类,提供各种操作文件方法删除指定的文件,如果指定的文件不存在,则不引发异常Delete(stringpath)将指定文件移动到一个新的路径Move(stringsourceFileName,stringdestFileName)按指定路径的源文件中的内容复制到目标文件中,如果目标文件不存在,则在指定路径中新建一个文件Copy(stringSourceFilePath,stringDestinationFilePath用于检查指定文件是否存在,该方法返回一个布尔值Exists(stringpath)说明方法目录操作Directory类提供对文件夹的拷贝、移动、删除等操作删除指定的文件,如果指定的文件不存在,则不引发异常Delete(stringpath)删除指定目录,如果bool指定true,则删除子目录中的所有目录内容。Delete(string,Boolean)用于将文件或目录及其内容移到新位置Move(stringsourceDirName,stringdestDirName)用于检查指定文件夹在磁盘上是否存在Exists(stringpath)说明方法小结编写五个基本步骤语句1、创建一个文件流、指定路径与打开方式。2、创建一个读取器,指定读取的文件流3、读取文件中的所有内容4、关闭读取器5、关闭文件流XML概述可扩展标记性语言XML用于描述数据StudentName张靓靓/NameAge20/AgeHobby唱歌歌/Hobby!----Name周杰杰/NameAge22/AgeHobby耍双节棍棍/Hobby/Student描述的内容一目了然节点成对出现eXtensibleMarkupLanguage可自由扩展:加入性别或者身高…节点区分大小写XML描述学生信息?xmlversion=1.0encoding=utf8?学生列表!--这是根元素--学生类别=本科学号=40101姓名中文名=赵钦英文名=JohnZhao/性别女/性别电话13688186616/电话/学生学生类别=专科学号=30101姓名中文名=黄明奇英文名=JackHuang/性别男/性别电话13789176726/电话/学生学生类别=本科学号=40102姓名中文名=郑炯英文名=JuneZheng/性别男/性别电话13548132316/电话/学生/学生列表声明语句根元素子元素属性XML文档的创建使用XmlTextWriter生成XML文档XML文档的创建使用DOM生成XML文档文档对象模型DOMDOM的基本思想是先把XML文档加载到内存并转换一棵树,称之为DOM树。XML文档的查询用XmlTextReader查询AttributeCount返回当前节点上的属性数;HasAttributes指示当前节点是否有属性;Name返回当前节点的名称;NodeType返回当前节点的类型;Value返回当前节点的文本值。Close()关闭XML文档;Read()从流中读取下一个节点,如果节点存在返回true,否则返回false;GetAttribute()返回属性的值;IsStartElement()是否为元素的开始标记;ReadInnerXml()返回当前节点的所有内容。XML文档的编辑使用DOM技术来编辑XML数据28总结【重点】1、掌握文本文件或二进制文件读写方法。2、掌握序列化和反序列化的实现方法3、初步掌握操作XML文档的编程方法,包括创建XML文档、查询和编辑XML数据等【难点】1、序列化和反序列化的实现方法2、DOM技术在XML中的应用