c#文件操作常用的类_第1页
c#文件操作常用的类_第2页
c#文件操作常用的类_第3页
c#文件操作常用的类_第4页
c#文件操作常用的类_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./在.NETFramework中进行的所有的输入和输出工作都要使用到流。流是串行化设备的抽象串行化设备可以以线性方式存储数据,并可以以同样的方式访问:一次访问—个字节。此设备可以是磁盘文件、打印机、存位置和或任何其他支持以线性方式读写的对象。当向某些外部目标写数据时,就要用到输出流,这可以是物理磁盘文件、网络位置、打印机或其他程序。常用的类:File实用类,提供许多静态方法,用于移动、删除、和复制文件。Directory实用类,提供许多静态方法,用于移动、删除和复制目录。Path实用类,用于处理路径名称。FileInfo表示磁盘上的物理文件,具有可以处理此文件的方法,要完成对文件的读写工作,就必须创建Stream对像。DirectoryInfo表示磁盘上的物理目录,具有可以处理此目录的方法FileStream表示可以被写或被读,或二者都可的文件,此文件可以同步或异步读和写StreamReader从流中读取字符数据,并可通过使用FileStream被创建为基类。StreamWriter向流写字符数据,可通过使用FileStream被创建为基类。FileSystemWatcherFileSystemWatcher是用于监控文件和目录,并在这些位置发生变化时,给出应用程序可以捕获的事件。◆File和Directory类作为实用类,File和Directory类都提供了许多方法,用于处理文件系统以及其中的文件和目录。这些是静态方法,涉及移动文件、查询和更新属性并创建FileStream对象。File类一些最常用的静态方法:Copy<>将文件复制到规定的位置Create<>在规定的恢蒙洗唇ㄎ募?/FONT>Delete<>删除文件Open<>在规定的路径上返回FileStream对像Move<>将规定的文件移动到新位置,可以在新位置给文件规定不同的名字Directory类的一些常用的静态方法CreateDirectory<>创建具有规定路径的目录Delete<>删除规定的目录以及其中的所有文件GetDirectories<>返回表示当前目录之下的目录的Directory对像的数组GetFiles<>返回在当前目录中的File对像的数组Move<>将规定的目录移动到新位置。可以在新位置为文件夹规定一个新名称FileInfo类FileInfo类不像File类,它没有静态方法,仅可用于实例化的对像。FileInfo对像表示在磁盘或网络位置的文件,注意它不是流,为了读写文件,必须创建Stream对像。fileInfo类提供了下面的关于基础性的文件的属性,这些属性可能用来更新文件。Attributes获取或设置当前文件的属性CreationTime获取当前文件的创建日期和时间DirectoryName获取文件目录的路径Exists判断是否存在文件FullName检索文件的完整路径Length获取文件的容量Name仅仅返回文件的名称,而不是完整的文件位置路径、当在.NET代码中规定路径名时,您可以使用绝对路径名,也可以使用相对路行名。绝对路径名显式地规定文件或目录来自于哪—个己知的位置——比如是c:驱动器。它的—个例是C:\work\LogFile.txt。注意它淮确地定义了其位置。相对路径名相对于应用程序在文件系统上运行的位置。通过使用相对路径名称,无需规定已知的驱动器或位置;当前的目录就是起点。例如,如果应用程序运行在c:\DeVelopment\FileDemo目录上<这里的应用程序是指代码生成后的exe文件>,并使用了相对路径"LogFile.txt,",则该文件就位于C:\DeVelopment\FileDemo\LogFile.txt中。为了上移目录,则使用..字符。这样,在同一个应用程中路径"../test.txt"是指向应用程序所在的目录的上一级目录里的文件test.txt。◆FileStream对象FileStream对象表示在磁盘或网络路径上指向文件的流。当类提供向文件读写字节的方法时,经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作字节和字节数组,而Stream类操作字符数据。字符数据易于使用,但是有些操作比如随机文件访问,就必须由FileStream对象执行。FileStream对象的构造函数:FileStreamaFile=newFileStream<"Log.txt",FileMode.OpenOrCreate>;FileMode枚举具有几种成员:Append如果文件存在,就打开文件,将文件位置移动到文件的末尾,并创建一个新文件。FileMode.Append仅可以与枚举FileAccess.Write联合使用Create创建新文件;如果存在这样的文件,就破坏它。CreateNew创建新文件,但是如果已经存在此文件,则抛出异常Open打开现有的文件,但是不存在所指定的文件,则抛出异常OpenOrCreate如果文件存在,则规定打开文件,否则就创建新文件,如果文件已经存在,则保留在文件中的数据Truncate打开现有文件,清除其容,然后我们可以向文件写入全新的数据,但是保留文件的初始创建日期,必须存在有文件,否则就抛出异常访问级别前面的构造函数默认以只读模式打开文件,需要一个附加参数规定不同的访问级别,此参数是FileAccess参数。FileStreamaFile=newFileStream〔"Log.txt",fileMode.OpenOrCreate,FileAccess.WriteFileAccess枚举有三种类型:Read、Write、ReadWrite.此属性的作用是:基于用户的身份验证级别改变用户对文件的访问读取文件的位置用seek:publiclongSeek〔longoffset,SeekOriginoriginLongoffset是规定文件指针以字节为单位的移动距离;SeekOriginorigin是规定开始计算的起始位置,此枚举包含3个值:Begin,Current和End。例:aFile.Seek<8,SeekOrigin.Begin>;//SeekOrigin.Begin指得是文件指针从文件的第一个字节起;而参数‘8‘指得是移动到文件的第8个字节例2:afile.Seek<2,SeekOrigin.Current>//在当前位置开始,再移动2个字节。例3:aFile.Seek<-5,SeekOrigin.End>//在文件末端位置开始,倒数5个字节。读取数据使用FileStream类读取数据不像使用StreamReader和StreamWriter类读取数据那么容易,这是因为FileStream类只能处理原始字节〔rawbyey,这使得FileStream类可以用于任何数据文件,而不仅仅是文本文件,通过读取字节数据就可以读取类似图像和声音的文件。这种灵活性的代价是不能使用它直接读入字符串,而使用StreamWriter和StreaMeader类却可以这样处理,从是有几种转换类可以很容易地将字节数组转换为字符数组,或者进行相反的操作。Read〔方法是从FileStream对象所指向的文件访问数据的主要手段:PRead〔byte[]array,intoffset,intcount//第一个参数是被传输进来的字节数组,用以接受FileStream对象中的数据。第二个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端的文件中向数组写数据,最后一个参数是规定从文件中读出多少字节。写入数据写入数据的流程是先获取字节数组,再把字节数据转换为字符数组,然后把这个字符数组用Write〔方法写入到文件中,当然在写入的过程中,可以确定在文件的什么位置写入,写多少字符等等。文件读写的例:读取文件usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespacemyFile{classProgram{staticvoidMain<string[]args>{byte[]byData=newbyte[100];//建立一个FileStream要用的字节组char[]charData=newchar[100];//建立一个字符组try{FileStreamaFile=newFileStream<"../../../../Data.txt",FileMode.Open>;//实例化一个FileStream对象,用来操作data.txt文件,操作类型是aFile.Seek<55,SeekOrigin.Begin>;//把文件指针指向,从文件开始位置向前55位字节所指的字节aFile.Read<byData,0,100>;//读取FileStream对象所指的文件到字节数组里}catch<IOExceptione>{Console.WriteLine<"close">;return;}Decoderd=Encoding.UTF8.GetDecoder<>;//d.GetChars<byData,0,byData.Length,charData,0>;//将编码字节数组转换为字符数组Console.WriteLine<charData>;Console.ReadLine<>;return;}}}写入文件:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespacemyFile{classProgram{staticvoidMain<string[]args>{byte[]byData=newbyte[100];//建立一个FileStream要用的字节组char[]charData=newchar[100];//建立一个字符组try{FileStreamaFile=newFileStream<"../../../../Data.txt",FileMode.Open>;//实例化一个FileStream对象,用来操作data.txt文件,操作类型是charData="我是谁?111?".ToCharArray<>;//将字符串的字符复制到字符组里aFile.Seek<0,SeekOrigin.End>;Encoderel=Encoding.UTF8.GetEncoder<>;//编码器el.GetBytes<charData,0,charData.Length,byData,0,true>;aFile.Write<byData,0,byData.Length>;}catch<IOExceptione>{Console.WriteLine<"close">;return;}}}}◆StreamWriter对像用FileWriter来随机读取文件是个好主意,而用StreamWriter可以直接把字符串写入文件中,它处理重要的转换和向FileStream对像写入工作。创建StreamWriter有很多方法:FileStreamaFile=newFileStream<"Log.txt",FileMode.CreatcNew>;StreamWritersw=newStreamWriter<aFile>;也可直接从文件中创建StreamWriter对象:StreamWritersw=newStreamWriter<"Log.txt",true>;后面这个Boolean值规定是附加文件还是创建新文件,如果此值为false,则就创建一个新文件,或者截取现有文件并打开它。如果此值设置为true,则打开文件,保留原来的数据,如果找不到文件,则创建一个新文件。注意:当创建FileStream对象时,您无法得到选项的围。除了使用Boolean值附加或创建新文件外,我们根本就无法像使用FileStream类时那样规定FileMode属性;而且,您也无法设置FileAccess属性.因此您总是具有对文件的读写特权,为了使用任何高级参数,您必须在FileStream构造函数中规定这些参数,然后在FileStream对象中创建StreamWriter。例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespaceStreamWriterFile{classProgram{staticvoidMain<string[]args>{try{FileStreamaFile=newFileStream<"data1.txt",FileMode.OpenOrCreate>;//建立一个fileStream对象StreamWritersw=newStreamWriter<aFile>;//用FileStream对像实例一个StreamWriter对象sw.Write<"first.">;sw.WriteLine<"helloworld!!!">;//写入字符串,方法WriteLine写入时后面跟一个换行符sw.Write<"Thisisa">;//写入字符串,方法Write写入时没有换行符sw.Write<"stringofcharacters.">;sw.Close<>;//用完后必须关闭对像}catch<IOExceptione>{Console.WriteLine<e.ToString<>>;}}}}◆StreamReader对象1.读取文件输入流用于从外部源读取数据,在很多情况下,数据源可以是磁盘上的文件或网络的某些位置,任何可能发送数据的位置都可以是数据源,比如网络应用程序,web服务,甚至是控制台。StreamReader是一个通用类,可以用于任何流;StreamReader对象的创建方式非常类似于StreamWriter对象的创建方式。StreamWriter类有两个基本的方法read和readLineRead〔方法将流的下一个字符作为正整数值返回,如果到达了流的结尾处,则返回-1ReadLing〔方法是读取并返回一行字符,如果返回为空,那么就是到达了流的结尾。ReadEnd〔方法读小文件最好,它直接读取完整的文件并作为字符串返回。例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespaceStreamReaderTest{classProgram{staticvoidMain<string[]args>{stringstrLine;try{Console.Write<"请输入文件路径及文件名:">;stringmess=Console.ReadLine<>;FileStreamaFile=newFileStream<mess,FileMode.Open>;StreamReadersr=newStreamReader<aFile>;//用FileStream对象实例化一个StreamReader对象//strLine=sr.ReadToEnd<>;//读取完整的文件,如果用这个方法,就可以不用下面的while循环strLine=sr.ReadLine<>;//读取一行字符并返回while<strLine!=null>{Console.WriteLine<strLine>;strLine=sr.ReadLine<>;}sr.Close<>;Console.ReadLine<>;}catch<IOExceptione>{Console.WriteLine<"anIOexceptionhasbeenthrown!">;Console.WriteLine<e.ToString<>>;return;}return;}}}2.分隔文件读取使用逗号分隔的文件,string类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论