大家好,欢迎来到IT知识分享网。
21.3.2 FileInfo类(http://book.51cto.com/art/200909/154499.htm)
FileInfo类是一个密封类,它可以用来创建、复制、删除、移动和打开文件的实例方法。FileInfo类包括6个属性,可以用来获取文件的名称、完整路径等,具体说明如表21.9所示。
表21.9 FileInfo类的属性表
21.3.3 创建文件
创建文件可以使用File类的Create()方法或者FileInfo类的Create()方法。
【示例21-18】 使用FileInfo类的Create()方法创建一个名称为”my.ini”的文件。
分析:该示例首先创建FileInfo类的实例fi,它被指定为my.ini文件,然后调用Create()方法创建该文件。新创建的my.ini文件保存在应用程序所在的目录
21.3.4 写入文件
存在多种方法,可以将指定内容写入到文件,如File类的OpenWrite()方法、FileInfo类的OpenWrite()方法等。
【示例21-19】 使用FileInfo类的OpenWrite()方法将”这是一个配置文件。”字符串写入到名称为my.ini的文件中,具体步骤如下:
(1)创建FileInfo类的实例fi,它被指定为my.ini文件。
(2)使用OpenWrite()方法打开my.ini文件,并保存为FileStream类的实例fsw。
(3)设置被写入的内容(”这是一个配置文件。”字符串),并转换为byte数组,保存为dataw。
(4)调用fsw实例的Write()方法将dataw数组中的内容写入到my.ini文件。
(5)调用fsw实例的Close()方法关闭fsw实例。
主要:my.ini文件的内容已经被使用Unicode方式编码过,所以不能看到该文件的真实内容
21.3.5 读取文件
存在多种方法,可以从指定文件中读取内容,如File类的OpenRead()方法、FileInfo类的OpenRead()方法等。
【示例21-20】 使用FileInfo类的OpenRead()方法从my.ini文件读取内容,并转换为一个字符串(保存为valuer),最终,将valuer的内容显示在控制台。具体步骤如下:
(1)创建FileInfo类的实例fi,它被指定为my.ini文件。
(2)使用OpenRead()方法打开my.ini文件,并保存为FileStream类的实例fsr。
(3)创建datar数组,用来保存从my.ini文件读取的内容。
(4)调用fsw实例的Read()方法读取my.ini文件的内容,并保存到datar数组。
(5)将datar数组转换为一个字符串,并保存为valuer。
(6)显示valuer的值。
(7)调用fsw实例的Close()方法关闭fsw实例。
分析:上述示例代码运行之后,将显示”这是一个配置文件。”字符串。
21.3.6 移动文件
移动文件可以使用以下2种方法中的任何一种。
File类的Move()方法:将指定文件移到新位置。
【示例21-21】 使用File类的Move()方法将my.ini文件移动为my01.ini文件。
1. File.Move(@”my.ini”,”my01.ini”);
分析:上述代码执行之后,实际上是创建了名称为my01.ini的新文件,并删除了my.ini文件。
FileInfo类的MoveTo()方法:将指定文件移到新位置。
【示例21-22】 创建FileInfo类的实例fi(表示”my.ini”文件),并调用MoveTo()方法将my.ini文件移动为my01.ini文件。
分析:上述代码执行之后,实际上是创建了名称为my01.ini的新文件,并删除了my.ini文件。
21.3.7 删除文件
删除文件可以使用以下2种方法中的任何一种。
File类的Delete()方法:将删除指定的文件。
【示例21-23】 使用File类的Delete()方法删除my.ini文件。
1. File.Delete(@”my.ini”,”my01.ini”);
FileInfo类的Delete()方法:将删除指定的文件。
【示例21-24】 创建FileInfo类的实例fi(表示my.ini文件),并调用Delete()方法删除my.ini文件。
21.4 实例:读取目录下指定类型的文件的内容
【实例21-1】 实现了读取指定目录下的、指定文件类型的、所有文件的内容,并在控制台中显示读取的内容。具体实现步骤如下:
(1)打开Visual Studio 2008集成开发环境,并创建名称为”Sample_21″的控制台应用程序。该应用程序的版本为.NET Framework 3.5。
(2)右击”解决资源方案管理器”面板中的Program.cs节点,打开名称为”Program.cs”的类文件,并在该文件中添加 ReaderFile (string path) 方法的程序代码。ReaderFile (string path)方法读取指定文件(由path参数指定)的内容,并返回读取的内容。具体步骤如下:
① 创建类型为string的fileData变量,用来保存读取的内容。
② 在try语句中读取文件的内容。
③ 创建读取文件内容的StreamReader类的实例reader,并指定该实例的编码方式为操作系统的默认编码方式。
④ 调用ReadToEnd()方法从头至尾读取文件的所有内容,并保存为fileData变量。
⑤ 关闭reader实例。
⑥ 如果try语句发生异常,则在catch语句中抛出异常。
综合上述,ReaderFile(string path)方法的程序代码如下。
(3)在Program.cs文件中添加ReaderSubDirectory(string path,string filter,ref StringBuilder content)方法的程序代码。该方法读取指定目录(由path参数指定)下的、满足过滤器(filter参数指定)的所有文件的内容,读取的内容都保存到content参数(该参数为引用参数)中。具体步骤如下:
① 判断path参数是否合法。如果不合法,则中止该方法。
② 创建目录信息的实例parentDi。
③ 使用foreach语句和GetFiles()方法搜索parentDi实例指定目录下的、满足过滤器(filter参数指定)的所有文件。
④ 如果foreach语句找到文件,则依次读取每一个文件的内容,并保存到content参数中。
综合上述,ReaderSubDirectory(string path,string filter,ref StringBuilder content)方法的程序代码如下:
(4)在Program.cs文件中添加ReaderDirectory(string path,string filter)方法的程序代码。该方法读取指定目录(由path参数指定)下的、满足过滤器(filter参数指定)的所有文件的内容,并返回读取的内容。具体步骤如下:
① 判断path参数是否合法。如果不合法,则中止该方法。
② 创建保存读取的内容的StringBuilder类的实例content。
③ 如果filter参数为空,则直接调用ReaderSubDirectory(string path,string filter,ref StringBuilder content)方法读取path参数指定目录(及其子目录)下的所有文件的内容。
④ 如果filter参数不为空,则首先将过滤器转换为一个字符串数组filters,然后使用foreach语句处理filters数组中每一个类型的文件,并读取path目录(及其子目录)下的、满足过滤器的所有文件的内容。
⑤ 上述读取文件的内容,都保存在content变量中。最后,将该变量转换为一个字符串,并返回该字符串。
综合上述,ReaderDirectory(string path,string filter)方法的程序代码如下:
(5)在Program.cs文件的Main(string[] args)方法中调用ReaderDirectory(string path,string filter)方法读取”C:/data”目录下的、后缀名为.cs的所有文件的内容,并显示在控制台中。程序代码如下:
(6)在Visual Studio 2008集成开发环境按下F5键,运行Sample_21应用程序。控制台显示的部分结果如下:
21.5 上 机 实 践
1.代码调试
在Visual Studio 2008集成开发环境中调试下列代码是否能够正常运行。如果能够正常运行,请写出运行结果。如果不能正常运行,请指出错误代码,并改正。
2.编程题
问题:如何遍历一个目录下的所有目录(不包括子目录)和文件,并显示目录和文件的名称?
解答:直接使用foreach语句和Directory类中的方法即可,程序代码如下。
本章主要介绍了.NET Framework中的I/O流、目录和文件处理,如文件流、目录流、目录处理、文件处理等。其中,读者要着重掌握目录处理和文件处理,为后续编写对文件操作的C#应用程序代码奠定基础。第22章将要介绍C#语言的Windows窗体编程。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139225.html