- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.net课程教学
第16章 流和文件 基本概念变量和数组用于临时存储数据一旦对象被垃圾回收或者程序结束,数据就丢失了;文件用于长期存储数据即使对象被垃圾回收或者程序结束,仍能从文件中访问到这些数据。通常存于外存文件完整的数据集合由“记录”构成,可以是任何类型的数据。C#使用流来处理数据文件文件处理属于输入、输出操作需使用System.IO名空间System.IO 名空间包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型文件处理的分类文件管理类创建、复制、移动文件等。文件操作类读写文件等文件操作异常类打开不存在的文件等System.IO名空间中包括的常用枚举 枚举FileAccess控制对文件的读写访问或读/写访问的常数取值分别为Read、Write和ReadWrite。枚举SeekOrigin提供表示流中的参考点以供进行查找的字段取值可以为Begin、Current和End分别指定流的开头、流内的当前位置和流的结尾 枚举FileMode指定操作系统打开文件的方式FileMode常用值:Append值打开现有文件并查找到文件尾,或创建新文件。只能同FileAccess.Write一起使用;Create值指定操作系统应创建新文件如果文件已存在,则其被覆盖重写;open指定操作系统打开现有文件,文件不存在则引发异常OpenOrCreate如文件存在,则打开已存在的文件;如文件不存在,则创建一个新文件并命名为指定的文件名。 枚举FileAttributes提供文件和目录的属性FileAttributes常用成员:Archive文件的存档状态使用此属性为文件加上备份或移除标记;Compressed:文件已压缩;Directory:该对象为一个目录;Hidden:文件是隐藏的,因此没有包括在普通的目录列表中;ReadOnly:文件只读System:文件为系统文件Temporary:文件是临时文件。16.1.2 文件相关类的层次结构 类Stream三个基本操作:读取流从流到数据结构(如字节数组)的数据传输;写入流从数据结构到流的数据传输 流查找 对流内的当前位置进行查询和修改功能取决于流具有的后备存储区类型 类MemoryStream以内存作为支持存储区非磁盘或网络连接封装以无符号字节数组形式存储的数据创建时可为空数组,也可在创建对象时被初始化。可在内存中直接访问这些封装的数据内存流的作用降低应用程序对临时缓冲区和临时文件的需要内存流的特点提供无法调整大小的数据流视图,但只能向其写入。虽然根据传递到构造函数中的参数能修改现有内容,但既不能追加也不能收缩流。空内存流可调整大小,而且可以向写入和中读取。不能执行异步的读写方法内存的输入与输出不需要这种特性类FileStream功能:进行文件读取、写入、打开和关闭操作对其他与文件相关的操作系统句柄进行操作如管道、标准输入和标准输出。特点:读写操作可以指定为同步或异步操作对输入输出进行缓冲,从而提高性能。磁盘文件始终支持随机访问只能对字节进行读写其他数据类型必须转化成字节才能传递到FileStream中 类BufferedStream功能给另一流上的读写操作添加一个缓冲层缓冲区内存中用于缓存数据的字节块可减少对操作系统的调用次数提高读取和写入性能缓冲区BufferedStream类的特点可进行读取或写入,但不能同时进行这两种操作。提供从基础数据源或储存库读取字节以及将字节写入的实现。在不需要缓冲区时防止缓冲区降低输入和输出速度在共享缓冲区中缓冲读取和写入。包装到流的其他类型中使用,不能单独使用。如BinaryReader和BinaryWriter类型的流中。Stream类的公共属性和字段等请自己参阅相关材料!16.2 文件的基本操作 16.2.1 文件的创建利用File类filename:文件名本身,可以带绝对地址。利用FileInfo类filename:文件名本身,可以带绝对地址。利用FileStream类 第一个参数是文件名,可以带绝对路径。后面两个参数分别表示操作模式和访问方式利用StreamWriter类16.2.2 读文件ReadByte()从流中读取一个字节,并将流内的位置向前推进一个字节,返回读入字节转化而来的整数,如果已到达流的末尾,则返回-1;Read()从当前流读取字节序列,并将此流中的位置提升读取的字节数,返回所读字节的数目。Stream类的派生类都重载了其父类的方法ReadByte()和Read()包括FileStream、BufferedStream和MemoryStream类派生类重载ReadByte()和Read()时的差异FileStream的ReadByte()方法从文件中读取一个字节,并将读取位置提升一个字节;BufferedStream的ReadByte()方法从基
文档评论(0)