《第12章文件操作.docx》由会员分享,可在线阅读,更多相关《第12章文件操作.docx(19页珍藏版)》请在优知文库上搜索。
1、第12章文件操作本章要点 文件和目录的创建、复制、移动、删除 文件的读写操作 异步文件操作本章主要介绍了如何对文件和目录的操作,即我们通常说的输入/输出操作。我们在实际的应用过程中经常会碰到对文件和目录的管理操作。总体来讲,文件和目录的操作主要包括创建、读取,写入、删除、更新等。本章将对以上内容做逐一的介绍和举例,以便初学者较好地理解这些内容。12.1 文件和目录要实现对文件和目录的操作,就必须得到.NET框架中相关类库的支持。在.NET框架的命名空间中就提供了Directory类和File类,通过这些类提供的属性和方法可以完成对文件和目录的创建、移动、浏览、复制、删除等操作。12.1.1 目
2、录操作Directory类提供了创建、查找和移动目录的许多静态方法。因此Directory无须创建类的实例即可调用。DirectoryInfo类与Directory很类似,它表示磁盘上的物理目录,具有可以处理此目录的方法,但必须实例化才能调用。表12.1列出了DireClory类的公共方法。表12.1DireCtOry类的公共方法方法说明CreateDirectory创建指定路径中的所有目录Delete删除指定的目录Exists确定给定路径是否引用磁盘上的现有目录GetCreationTime获取目录的创建日期和时间GetCurrentDirectorjr获取应用程序的当前工作目录GetDir
3、ectories获取指定目录中子目录的名称GetFiIes返回指定目录中的文件的名称GetFileSystemEntries返回指定目录中所有文件和子目录的名称GetLastAccessTime返回上次访问指定文件或目录的日期和时间GetLastWriteTime返回上次写入指定文件或目录的日期和时间GetLogicalDrives检索此计算机上格式为“驱动器号:的逻辑驱动器的名称GetParent检索指定路径的父目录,包括绝对路径和相对路径Move将文件或目录及其内容移到新位置SetCreationTime为指定的文件或目录设置创建日期和时间SetCurrentDirectory将应用程序的
4、当前工作目录设置为指定的目录SetLastAccessTime设置上次访问指定文件或目录的日期和时间SetLastWriteTime设置上次写入目录的日期和时间表12.2列出了DireClOrylnfo类的公共属性。表12.2DgCtOryInfo类的公共属性名称说明Attributes获取或设置当前FiIeSystemInfo的FiIeAliributesCreationTiine获取或设置当前FiIeSystemInfo对象的创建时间Exists获取指示目录是否存在的值Extension获取衣示文件扩展名部分的字符串FullName获取目录或文件的完整目录LastAccessTime获取或
5、设置上次访问当前文件或目录的时间LastWriteTime获取或设置上次写入当前文件或目录的时间Name获取此DireCloryInfO实例的名称Parent获取指定子目录的父目录Rt获取路径的根部分表12.3列出了DirectoryInfo类的公共方法。表12.3DirectOryInfO类的公共方法名称说明Create创建目录CreateSubdirectorjf在指定路径中创建一个或多个子目录。指定路径可以是相对于DirectoryInfo类的此实例的路径Delete从路径中删除DireCtorylnfo及其内容GetDirectories返回当前目录的子目录GetFiles返回当前目录
6、的文件列表MoveTo将DirectoryInfo实例及其内容移动到新路径Refresh刷新对象的状态下面是一个关于目录操作的简单例子。例12.1编写程序,要求判断在指定位置是否存在一个目录,如果存在则删除此目录,否则创建该目录。程序代码:usingSystem;usingic;using/using;using;using;手动加载命名空间namespacecl2_lclassProgramstaticvoidMain(stringargs)/指定目录的路径stringpath=C:CrtDiren;try/判断目录是否存在if(!s(path)/如果不存在则创建目录eDirectory(p
7、ath);1.ine(创建目录成功;)else/如果目录存在,则删除该目录e(path,true);1.ine(删除目录成功;)catch(IOExceptione)1.ine(”处理过程失败:0,fe.ToString();finally分析:上面的例子在控制台应用程序中完成,其中用到了”C:CrtDire”;的表达方式,加个说明后面都是字符串形式,不然就要为“这些进行转义。在中提供了各种输入输出的异常,如对异常IoEXCePtion的捕捉,输出提示信息,便于查找任务失败的原因。12.1.2 Directorylnfo对象的创建要查看目录层次,需要实例化一个DirectoryInfo对象。D
8、irectoryInfo类提供了许多方法,用于典型操作,如复制、移动、重命名、创建和删除目录,可以获得所含文件和目录的名称。如果打算多次重用某个对象,可考虑使用DirectoryInfo的实例方法,而不是Directory类的静态方法,因为并不总是需要安全检查。下面的代码示例演示如何利用DirectoryInfo实例化一个对象目录,并使用其属性获得信息,使用其方法来操作对象。例12.2设计一个程序,将某个目录(含子目录)移到目标文件夹下程序代码:usingSystem;usingic;using;using;using;using/手动加载命名空间namespacecl2_2(classPro
9、gramstaticvoidMain(stringargs)try(/创建一个DireZorY工nfo对象Directoryinfodi=newDirectoryInfo(c:TempDir);/如果不存在的话,建立此目录if(di.Exists=false)di.Create();/在这个新建的目录下建立子目录DirectoryInfodis=di.CreateSubdirectory(SubDirn);/如果目标目录不存在,则建立目录,并将刚才的目录移动至if(s(&c:NewTempDirn)=false)eDirectory(c:NewTempDir);di.MoveTo(0c:New
10、TempDirTempDir);Line(目录已于0移动成功!,di.CreationTime);)catch(IOExceptione)(IAne(移动失败:0,e.ToString();)finally分析:如果试图将c:TempDir移动到Ic:NewTempDir,而c:NewTempDir已经存在,则此方法将引发IOException。因此必须将c:NewTempDirTempDirn作为MoveTo方法的参数。按CW+F5组合键运行后,显示的结果如图12.1所示。SJC:Windowssystem32cmd.exe目录已于2013/8/71?:14:24移动成功!请按磅嬲续.图12
11、.1例12.2的运行结果12.1.3 文件操作FiIe类通常与FileStream类协作完成对文件的创建、删除、复制、移动、打开等操作。与DireCtOry的方法一样,所有的File方法都是静态的,不需要实例化即可以调用File方法。FileInfo和File对象是紧密相关的,与DirectoryInfo一样,FileInfo的所有方法都是实例方法。所以如果只想执行一个操作,那么使用File中的静态方法的效率比使用相应的FileInfo中的实例方法可能更高。所有的File方法都要求当前所操作的文件和目录的路径。表12.4列出了File类公开的成员。表12.4FiIe类公开的成员名称说明Appe
12、ndAllTexl将指定的字符串追加到文件中,如果文件还不存在则创建该文件AppendText创建一个SlreamWriter,它将UTF-8编码文本追加到现有文件Copy将现有文件复制到新文件Create在指定路径中创建文件CreateText创建或打开一个文件,用于写入UTF-8编码的文本Delete删除指定的文件。如果指定的文件不存在,则不引发异常GetAttributes获取在此路径上的文件的FileAttributesGetCreationTime返回指定文件或目录的创建日期和时间GetLastAccessTime返回上次访问指定文件或目录的口期和时间GetLiistWriteTim
13、e返回上次写入指定文件或目录的日期和时间Move将指定文件移到新位置,并提供指定新文件名的选项Open打开指定路径上的FileStreamOpenRead打开现有文件以进行读取OpenText打开现有UTF-8编码文本文件以进行读取OpenWrite打开现有文件以进行写入ReadAHBytes打开一个文件,将文件的内容读入个字符串,然后关闭该文件ReadAlILines打开一个文本文件,将文件的所有行都读入一个字符串数组,然后关闭该文件ReadAlIText打开一个文本文件,将文件的所有行读入到一个字符串中,然后关闭该文件Replace使用其他文件的内容替换指定文件的内容,这一过程将删除原始文
14、件,并创建被替换文件的备份SetAttributes设置指定路径上文件的指定的FileAttributesSetCreationTimc设置创建该文件的日期和时间SetLastAccessTime设置上次访问指定文件的日期和时间SetLastWriteTime设置上次写入指定文件的日期和时间WriieAIIByies创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。如果目标文件已存在,则改写该文件WriteAllLines创建一个新文件,在其中写入指定的字符串,然后关闭文件。如果目标文件已存在,则改写该文件WriteAllText创建一个新文件,在文件中写入内容,然后关闭文件。如果目标文件已存在,则改写该文件表12.5列出了FileInfo类的常用属性。表12.5FileInfo类的常用属性名称说明Attributes获取或设置当前FileSystemInfo的FiIeAttributesCreationTime获取或设置当前FileSystemInfo对象的创建时间Directorjr获取父目录的实例DirectoryName获取表示目录的完整路径的字符串Exists获取指示文件是否存在的值Extension获取表示文件扩展名部分的字符串FullName获取目