版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章文件操作主要内容文件和目录的创建、复制、移动、删除文件得读写操作异步文件操作12.1文件和目录在了解如何对文件和目录操作之前,我们先看看.NET为文件和目录提供的支持。.NET框架在命名空间System.IO中为我们提供了Directory类来进行目录管理。利用它,我们可以完成对目录进行创建、移动、浏览、删除等操作。命名空间System.IO还为我们提供了File类,File类通常和FileStream类一起协作来完成对文件的创建、删除、复制、移动、打开等操作。目录操作Directory类提供了创建、移动和查找目录的许多静态方法。因此Directory无须创建类的实例即可调用。DirectoryInfo类与Directory很像,用于提供文件和目录的信息。Directory类的公共方法DirectoryInfo类的公共属性DirectoryInfo类的公共方法关于目录操作的一个小例子例:编写一个程序,查找某指定的目录是否存在如果存在,则删除该目录;如果不存在,则创建该目录。程序代码:usingSystem;usingSystem.IO;namespacen12_1{classProgram{staticvoidMain(string[]args){//将要创建目录的路径
stringpathFile=@"C:\CreateDirectory";//待删除目录的路径
stringtargetFile=@"c:\DeleteDirectory";try{//判断目录是否存在
if(!Directory.Exists(pathFile)){//如果不存在则创建目录
Directory.CreateDirectory(pathFile);}if(Directory.Exists(targetFile)){//如果目录存在,则删除该目录
Directory.Delete(targetFile,true);}}catch(IOExceptione){Console.WriteLine("处理过程失败:{0}",e.ToString());}finally{}}}}程序代码解析上面的例子中用到了异常IOException捕捉,System.IO中提供了各种输入输出的异常,便于我们了解任务失败的原因所在,或者时给程序的用户提示信息。DirectoryInfo对象的创建要查看目录层次,需要实例化一个DirectoryInfo对象。DirectoryInfo类提供了许多方法,用于典型操作,如复制、移动、重命名、创建和删除目录,可以获得所含文件和目录的名称,也可以获得FileInfo和DirectoryInfo对象,因此我们可以深入层次结构中,提取子目录并递归地查看它们。如果打算多次重用某个对象,可考虑使用DirectoryInfo的实例方法,而不是Directory类的静态方法,因为并不总是需要安全检查。例设计一个程序,演示如何计算一个给定目录的大小(Bytes)。程序代码:usingSystem;usingSystem.IO;namespacen12_2{classShowDirSize{publicstaticlongDirSize(DirectoryInfod){longSize=0;//返回当前目录的文件列表,累加字节数
FileInfo[]fis=d.GetFiles();foreach(FileInfofiinfis){Size+=fi.Length;}//返回当前目录的子目录,累加子目录的字节数
DirectoryInfo[]dis=d.GetDirectories();foreach(DirectoryInfodiindis){//递归调用DirSize函数,提取子目录并递归地查看它们,并累加字节数
Size+=DirSize(di);}//以字节数返回目录与其子目录的大小
return(Size);}staticvoidMain(string[]args){//初始化待计算目录路径
stringFilePath=@"C:\ProgramFiles";if(FilePath.Length<0){Console.WriteLine("目录路径错误,请设定正确的目录路径!");}else{//参数是一个字符串,它指定要在其中创建DirectoryInfo的路径。
DirectoryInfod=newDirectoryInfo(FilePath);//调用DirSize函数
Console.WriteLine("{0}目录和它的子目录总大小为:{1}bytes.",d,DirSize(d));}}}}程序运行结果图文件操作File类通常和FileStream类协作完成对文件的创建、删除、复制、移动、打开等操作。与Directory的方法一样,所有的File方法都是静态的,不需要实例化即可以调用File方法。FileInfo和File对象是紧密相关地,与DirectoryInfo一样,FileInfo的所有方法都是实例方法。File类公开的成员FileInfo类的常用属性FileInfo类的常用方法12.2数据的读取和写入按文本模式读写StreamReader类和StreamWriter类为我们提供了按文本模式读写数据的方法。StreamReader类的常用属性StreamReader类的常用方法StreamWriter类的常用属性StreamWriter类的常用方法StreamReader类的方法的一个小例子运行结果显示使用StreamWriter类的一个小例子按二进制模式读写二进制读取与文本读取不同,如果不能肯定文件只包含文本,那么将它当成字节流是最安全实用的。System.IO命名空间为我们提供了BinaryReader和BinaryWriter类,用于进行二进制模式读写文件。BinaryReader类的常用方法BinaryWriter类的常用方法二进制模式读写的一个例子程序运行结果程序代码解析12.3异步文件操作以上几小节涉及的都是同步I/O操作,本小节将介绍异步文件操作,先谈谈两者之间的区别。在同步I/O操作中,方法将一直处于等待状态,直到I/O操作完成。而在异步I/O操作里,在进行I/O操作时,程序的方法仍可以转移去执行其它的操作。这样就大大提高了程序的执行效率,充分利用了计算机的高性能。在.NET框架中,通过Stream类的BeginRead()方法、EndRead()方法、BeginWrite()方法以及EndWrite()方法提供了异步I/O。异步I/O的顺序如下:调用文件的BeginRead()方法,然后转向其他与此无关的工作,读取过程将在另一线程中进行。当读取完成时,会有一个回调方法进行通知,然后再处理读取的数据,再启动一次读取,然后又回到另一项工作上去。小结应用程序中常常需要读取和写入一些信息,这时,我们就会遇到文件的读写操作。在C#语言中进行文件操作,我们只需要利用.NET框架在System.IO命名空间提供的类,就可以进行数据文件的读写操作。其中我们经常用到的有:File,Stream,FileStream,BinaryReader
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东惠州龙门县国有资产事务中心下辖县属企业招聘笔试笔试历年参考题库附带答案详解
- 2025山东济宁高新区行政审批服务局招聘75名劳务派遣人员笔试历年参考题库附带答案详解
- 2025中意宁波生态园控股集团有限公司第三次招聘笔试及人员(浙江)笔试历年参考题库附带答案详解
- 河道整治工程施工队伍培训方案
- 桥梁预制构件运输与安装技术
- 企业高管质量管理培训方案
- 活动1 养金鱼教学设计小学劳动粤教版劳动与技术四年级-粤教版(劳动与技术)
- 边坡土钉墙施工现场安全防护方案
- 钣喷生产线人机工程设计方案
- 土石方作业面合理布局方案
- 管理会计学 第10版 课件 第4章 经营预测
- 预防和处理医疗中受试者损害及突发事件的预案
- 物理化学D(上):第5章- 化学平衡-
- 国开2023法律职业伦理-形考册答案
- SL703-2015灌溉与排水工程施工质量评定规程
- 脑膜炎奈瑟菌
- 教育学原理课后答案主编项贤明-2
- 糖尿病的中医分类与辩证施治
- 《天大考研资料 物理化学》第十章 表面现象
- JJG 971-2002液位计
- 迪斯尼动画黄金12法则
评论
0/150
提交评论