第10章文件操作;
本章要点
●文件和目录的创建、复制、移动、删除。
文件的读写操作。
异步文件操作。;
技能目标
●掌握文件和目录操作方法。
●掌握文件的读写操作方法。;
10.1工作场景导入
●完成如图10.1所示的简单的文件操作控制台应用程序,该控制台应用程序能完成以下几个功能:创建文件、
删除文件、复制文件、显示指定目录下的所有文件、以及移动文件这几个功能。
C:\WINDOws\system32\cmd.e…
欢迎进入文件操作系统!;
【引导问题】
●文件操作适用哪些类?该类的属性和方法有哪些?如何操作文件?
●目录操作适用哪些类?该类的属性和方法有哪些?如何操作目录?
文件读写模式有哪几种?使用这几种模式如何对文件进行读写?;
10.2文件和目录
●在了解如何对文件和目录进行操作之前,先看看.NET为文件和目录提供的支持。.NET框架在命名空间
System.IO中提供了Directory类来进行目录管理。利用它,可以完成对目录进行创建、移动、浏览、删除等操作。命名空间System.IO还提供了File类,File类通常和FileStream类一起协作,来完成对文件的创建、删除、复制、移动、打开等操作。;
10.2.1目录操作
●1.Directory类
●该类主要提供关于目录的各种操作,Directory类提供了创建、移动和查找目录的许多静态方法。因此
Directory无须创建类的实例即可调用。;
●2.DirectoryInfo类
●DirectoryInfo类与Directory很类似,用于提供文件和目录的信息。要查看目录层次,需要实例化一个
DirectoryInfo对象。DirectoryInfo类提供了许多方法,用于典型操作,如复制、移动、重命名、创建和删除目录,可以获得所含文件和目录的名称,也可以获得FileInfo和DirectoryInfo对象,因此可以深入层次结构中,提取子目录并递归地查看它们。如果打算多次重用某个对象,可考虑使用DirectoryInfo的实例方法,而不是Directory类的静态方法,因为并不总是需要安全检查。;
10.2.2文件操作
●1.File类
●File类通常与FileStream类协作完成对文件的创建、
删除、复制、移动、打开等操作。与Directory的方法一样,所有的File方法都是静态的,不需要???例化即可以调用File方法。
2.FileInfo类
FileInfo和File对象是紧密相关的,与DirectoryInfo一样,FileInfo的所有方法都是实例方法。;
●在System.IO命名空间中,包含几个用于从流中读写数据的类,各有不同的用途。
●按文本模式读写
StreamReader类和StreamWriter类提供了按文本模式读写数据的方法。
按二进制模式读写
二进制读取与文本读取不同,如果不能肯定文件只包含文本,那么将它当成字节流是最安全实用的。System.I0为我们提供了
BinaryReader和BinaryWriter类用于按二进制模式读写文件
它们提供的一些读写方法是对称的,针对不同的数据结构BinaryReader和BinaryWriter提供了多种方法。;
10.4异步文件操作
以上几小节涉及的都是同步I/0操作,本小节将介绍异步文件操作,先谈谈两者之间的区别。
●在同步I/0操作中的方法将一直处于等待状态直到I/0操作完成,而在异步I/0操作中在开始了I/0操作后程序的方法可以转移去执行其它的操作这样大大提高了程序执行的效率。由于Windows是一个多任务操作系统在同一时刻系统可能会接受到多个I/0操作请求要求对磁盘文件执行各种操作如果采用同步方式那么每时每刻最多只能有一个I/0操作在进行而其它的任务都处于等待状态系统的利用率将会大为
降低异步I/0操作则较好地解决了这种性能上的问题。
在.NET框架中,通过Stream类的BeginRead()、EndRead()、
BeginWrite()和EndWrite()方法提供了异步I/0。
异步I/0的顺序如下:调用文件的BeginRead()方法,然后转向其他与此无关的工作,读取过程将在另一线程中进行。当读取完成时,会有一个回调方法进行通知,然后处理读取的数据,再启动一次读取,然后又回到另一项工作上去。;
10.5回到工作场景
●以上小节讲解了文件和目录的操作方法,现在回到工作场景解决工作场景中的问题。工作场景要求完成以下几个功能:创建文件、删除文件、复制文件、显示指定目录下的所有文件、以及移动文件这几个功能。