欢迎来到天天文库
浏览记录
ID:50040723
大小:123.00 KB
页数:28页
时间:2020-03-08
《C# 2008程序设计基础案例教程 教学课件 作者 江南第八章 数据流和文件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C#2008程序设计基础案例教程第八章数据流和文件8.1System.IO命名空间概述System.IO命名空间中包含了文件、目录、路径和流等操作相关的所有类。流与文件是既相关又有区别的两个概念。文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合。相反,流提供一种向后备存储写入字节和从后备存储读取字节的方式,后备存储包括软盘、硬盘、内存、网络等。与读写文件对应的流称为文件流,除此之外也存在多种流,例如:网络流、内存流和磁带流等。8.1.1案例功能在图书借阅管理系统的备忘录窗口中(见下图),
2、使用文件流的读写存取日志。当加载窗体时,从文件Log.txt中读取日志信息显示在窗口中。用户也可以在文本框中输入并添加新的日志信息,点击“备份按钮”进行日志文件备份。8.1.2案例步骤为“添加”、“删除”按钮和窗体的Load事件编写代码。查看代码可以看到,在代码中主要用到了FileSteam类。FileSteam(文件流)这个类主要用于在二进制文件中读写二进制数据,也可以使用它读写任何文件。FileSteam类要构造FileSteam实例,需要以下4条信息:要访问的文件。表示如何打开文件的模式。例如,创建一个
3、新文件或打开一个现有的文件。如果打开一个现有的文件写入操作是覆盖文件原来的内容,还是添加到文件的末尾?表示访问文件的方式——是只读、只写,还是读写?共享访问——表示是否独占访问文件。如果允许其他流同时访问文件,则这些流是只读、只写还是读写文件?FileMode、FileAccess和FileShare枚举构造FileSteam实例的后三个参数值分别取FileMode、FileAccess和FileShare枚举的枚举值。枚举值FileModeAppend、Create、CreateNew、Open、OpenO
4、rCreate和TruncateFileAccessRead、ReadWrite和WriteFileShareInheritable、None、Read、ReadWrite和Write示例:构造FileSteam实例方式FileStreamfs=newFileStream("Log.txt",FileMode.Append,FileAccess.Write,FileShare.None);对于FileMode,如果要求的模式与文件的现有状态不一致,就会抛出一个异常。FileAccess和FileShare枚举
5、是按位标志,所以这些值可以与C#的按位OR运算符
6、合并使用。流的关闭使用完一个流后,就应关闭它,如案例中代码:fs.Close();关闭流会释放与它相关的资源,允许其他应用程序为同一个文件设置流。在打开和关闭流之间,可以读写其中的数据,FileStream有许多方法可以进行这样的读写。8.1.3案例拓展StreamReader和StreamWriter类这两个类专用于读写文本文件StreamReader.ReadLine()方法:读取一行文本StreamWriter.WriteLine():写入一行文本,并自
7、动换行StreamReader类该类只能执行读操作。一般构造时提供两个参数:编码格式文件名或另一个流对象例如:StreamReadersw=newStreamReader("ReadMe.txt");StreamReadersw=newStreamReader("ReadMe.txt",Encoding.UTF8);FileStreamfs=newFileStream("Log.txt",FileMode.Open,FileAccess.Read);StreamReadersr=newStreamReader
8、(fs);Encoding枚举命名空间:System.Text这个类是一个抽象基类,可以根据这个类定义许多类,其方法可获取实际的文本编码。它的每个属性都返回相应类的一个实例,可以使用的属性包括:ASCIIUnicodeUTF7UTF8UTF32BigEndianUnicode也可通过GetEncoding方法获得指定代码页的编码。StreamWriter类构造方式与StreamReader类类似,它只能用于写入文件。构造时可以使用bool类型参数指定是否以追加方式打开,例如:StreamWritersw=ne
9、wStreamWriter("ReadMe.txt",true,Encoding.ASCII);与FileStream一样,应在使用后关闭StreamReader和StreamWriter,例如:sw.Close();8.1.4案例思考通过对备忘录功能的代码分析,我们发现在对日志文件进行读写时,做法都是先构造FileStream实例,之后将StreamReader或StreamWriter关联到这个
此文档下载收益归作者所有