文档介绍:第16章流和文件
主要内容
本章介绍文件操作,主要内容包括流和文件、文件的输入输出、读写二进制文件、读写文本文件以及文件管理。本章学习的目标包括:理解流类层次结构;掌握对文件的创建、读写和相关操作;理解C#应用程序中对文件的管理。
基本概念
完整的数据集合称为一个“文件”,文件由“记录”构成,记录可以是任何类型的数据。
文件存放在硬盘上,就有一个存放路径。对于路径,一般采用目录管理的方式。
C#使用流来处理数据文件。
在C#中,文件处理属于输入、输出操作,因此,。 名空间包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型,该名空间中包含许多文件操作相关的类。我们大致将这些主要的类分为三种:第一种类和文件的管理有关,比如创建文件、复制文件、将文件从一个路径移动到另一个路径下等等。第二种类和文件本身的操作相关,如读、写文件等。第三种类则是文件操作时的异常类,例如打开不存在的文件等。
文件相关类的层次结构
文件相关类的层次结构
文件的基本操作
这一节讲解文件的基本操作,主要是文件的创建、读、写和更新。文件的创建一般属于文件管理的范畴,而文件的读、写和更新则通常认为是文件的操作,因为文件的管理,还有目录管理,相关的类一般不是Stream和它的派生类,而文件的读写则一般由Stream或者它的派生类来实现,读写相关的类还有TextReader、TextWriter、BinaryReader、BinaryWriter及其相关类。
文件的创建(1)
利用File类
第一种方法利用File类,因为File类提供用于创建、复制、删除、移动和打开文件的静态方法,因此创建文件时不需要生成File类的实例,直接利用File类,调用它的Create()方法即可,代码如下:(filename);
filename可以是文件名本身,也可以带绝对地址。
利用FileInfo类
第二种方法和第一种类似,利用的是FileInfo类,因为FileInfo类提供创建、复制、删除、移动和打开文件的实例方法,因此,和上面方法的不同之处在于创建文件时,先生成FileInfo类的实例,调用该实例的Create()方法。其示意代码如下:
FileInfo myfile = new FileInfo(filename); ();
同样,filename可以是文件名本身,也可以带绝对地址。
文件的创建(2)
利用FileStream类
在调用其构造函数时给出文件名即可。具体的代码分别如下:
FileStream myStream = new FileStream(FileName, , );
第一个参数是文件名,可以带绝对路径,后面两个参数分别表示操作模式和访问方式。
利用StreamWriter类
在调用其构造函数时给出文件名即可。具体的代码分别如下:
StreamWriter myStreamWriter = new StreamWriter(FileName);
读文件(1)
从文件中读取数据也有多种方法,主要是Stream类及其派生类。
Stream类中有两个读文件的方法ReadByte()和Read(),前者从流中读取一个字节,并将流内的位置向前推进一个字节,返回读入字节转化而来的整数,如果已到达流的末尾,则返回-1;后者从当前流读取字节序列,并将此流中的位置提升读取的字节数,返回所读字节的数目。
S