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

下载本文档

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

文档简介

1、在.NET Framework中进行的所有的输入和输出工作都要使用到流。流是串行化设备的抽 象串行化设备可以以线性方式存储数据,并可以以同样的方式访问:一次访问一个字节。此 设备可以是磁盘文件、打印机、存位置和或任何其他支持以线性方式读写的对象。 当向某些外部目标写数据时,就要用到输出流,这可以是物理磁盘文件、网络位置、打印机 或其他程序。 常用的类: File实用类,提供许多靜态方法,用于移动、删除、和复制文件。 Directory实用类,提供许多静态方法,用于移动、删除和复制目录。 Path实用类,用于处理路径名称。 Fileinfo表示磁盘上的物理文件,具有可以处理此文件的方法,要完成对

2、文件的读写 工作,就必须创建Stream对像。 Directoryinfo表示磁盘上的物理目录,具有可以处理此目录的方法 FileStream表示可以被写或被读,或二者都可的文件,此文件可以同步或异步读和 写 StreamReader从流中读取字符数据,并可通过使用FileStream被创建为基类。 StreamWriter向流写字符数据,可通过使用FileStream被创建为基类。 F订eSystemWatcherFileSystemWatcher是用于监控文件和目录,并在这些位置发生变 化时,给出应用程序可以捕获的事件。 File 和 Directory 类 作为实用类,File和Dire

3、ctly类都提供了许多方法,用于处理文件系统以及其中的文件 和目录。这些是静态方法,涉及移动文件、查询和更新属性并创建FileStream对象。 File类一些最常用的靜态方法: CopyO将文件复制到规定的位置 Create ()在规定的恢蒙洗唇万募?/FONT DeleteO删除文件 OpenO在规定的路径上返回FileStrearn对像 MoveO将规定的文件移动到新位置,可以在新位置给文件规定不同的名字 Directory类的一些常用的靜态方法 CreateDirectory ()创建具有规定路径的目录 DeleteO删除规定的目录以及其中的所有文件 GetDi rectories (

4、)返回表示当前目录之下的目录的Directory对像的数组 GetFilesO返回在当前目录中的Fi le对像的数组 MoveO将规定的目录移动到新位置。可以在新位置为文件夹规定一个新名称 Fileinfo 类 Fileinfo类不像File类,它没有靜态方法,仅可用于实例化的对像。Fileinfo对像表示在 磁盘或网络位置的文件,注意它不是流,为了读写文件,必须创建Stream对像。 fileinfo类提供了下面的关于基础性的文件的属性,这些属性可能用来更新文件。 Attributes获取或设置当前文件的属性 CreationTime获取当前文件的创建日期和时间 DirectoryName获

5、取文件目录的路径 Exists判断是否存在文件 Fu 11 Name检索文件的完整路径 Length 获取文件的容量 Name仅仅返回文件的名称,而不是完整的文件位置路径、 当在.NET代码中规定路径名时,您可以使用绝对路径名,也可以使用相对路行名。绝对路 径名显式地规定文件或目录来自于哪一个己知的位置一一比如是c:驱动器。它的一个例是 C: workLogFHe. txt。注意它淮确地定义了其位置。 相对路径名相对于应用程序在文件系统上运行的位置。通过使用相对路径名称,无需规定已 知的驱动器或位置;当前的目录就是起点。例如,如果应用程序运行在c: Development FileDemo目录

6、上(这里的应用程序是指代码生成后的exe文件),并使用了相对路径 LogFile. txt,则该文件就位于 C: Development Fi leDemoLogFi le. txt 中。为了上 移目录,则使用.字符。这样,在同一个应用程中路径./test, txt ”是指向应用程序所 在的目录的上一级目录里的文件test, txt。 FileStream 对象 FileStream对象表示在磁盘或网络路径上指向文件的流。当类提供向文件读写字节的方法 时,经常使用StreamReader或Streamer iter执行这些功能。这是因为FileStream类操作 字节和字节数组,而Stream

7、类操作字符数据。字符数据易于使用,但是有些操作比如随机 文件访问,就必须由FileStream对象执行。 FileStream对象的构造函数: FileStream aFile = new FileStream( Log. txt ,Fi1 eMode. OpenOrCreate): FileMode枚举具有几种成员: Append如果文件存在,就打开文件,将文件位置移动到文件的末尾,并创建一个新文 件。Fi 1 eMode. Append仅可以与枚举Fi leAccess. Write联合使用 Create创建新文件;如果存在这样的文件,就破坏它。 CreateNew创建新文件,但是如果已经

8、存在此文件,则抛出异常 Open打开现有的文件,但是不存在所指定的文件,则抛出异常 OpenOrCreate如果文件存在,则规定打开文件,否则就创建新文件,如果文件已经存 在,则保留在文件中的数据 Truncate打开现有文件,淸除其容,然后我们可以向文件写入全新的数据,但是保留 文件的初始创建日期,必须存在有文件,否则就抛出异常 访问级别 前面的构造函数默认以只读模式打开文件,需要一个附加参数规定不同的访问级别,此参数 是 FileAccess 参数。 FileStreamaFile=newFileStream( Log. txtM ,fileMode .0penOrCreate,Fi1eA

9、ccess .Write) FileAccess枚举有三种类型:Read、Write. ReadWrite.此属性的作用是:基于用户的身份 验证级别改变用户对文件的访问 读取文件的位置用 seek: publ ic long Seek (long offset, SeekOrigin origin) Long offset是规定文件指针以字节为单位的移动距离;SeekOrigin origin是规定开始计 算的起始位置,此枚举包含3个值:Begin,Current和End。 例:aFile. Seek (8. SeekOrigin. Begin):/ SeekOrigin. Begin 指得是

10、文件指针从文件的第 一个字节起;而参数8 指得是移动到文件的第8个字节 例2: afile. Seek(2,SeekOrigin. Current)/在当前位置开始,再移动2个字节。 例3: aFile. Seek(-5,SeekOrigin. End)/在文件末端位置开始,倒数5个字节。 读取数据 使用FileStream类读取数据不像使用StreamReader和StreamWritei类读取数据那么容易, 这是因为FileStream类只能处理原始字节(raw byey),这使得FileStream类可以用于任 何数据文件,而不仅仅是文本文件,通过读取字节数据就可以读取类似图像和声音的文

11、件。 这种灵活性的代价是不能使用它直接读入字符串,而使用StreamWriter和StreaHeader类 却可以这样处理,从是有几种转换类可以很容易地将字节数组转换为字符数组,或者进行相 反的操作。 Read ()方法是从FileStream对象所指向的文件访问数据的主要手段: Public int Read (byte array, int offset, int count) /第一个参数是被传输进来 的字节数组,用以接受FileStream对象中的数摇。第二个参数是字节数组中开始写入数据 的位置,它通常是0,表示从数组的开端的文件中向数组写数据,最后一个参数是规定从文 件中读出多少字节

12、。 写入数据 写入数据的流程是先获取字节数组,再把字节数据转换为字符数组,然后把这个字符数组用 Write ()方法写入到文件中,当然在写入的过程中,可以确定在文件的什么位置写入,写 多少字符等等。 文件读写的例: 读取文件 using System; using System Collections Generic; using System .Text; using System. 10; namespace myFile class Program static void Main(string args) ( byte byData = new byte100:/建立一个 FileSt

13、rearn 要用的字节组 chart chaiData = new char 100:/建立一个字符组 try FileStream aFile = new Fi 1 eStream(H./Data, txt, Fi 1 eMode. Open) ;/实例 化一个FileStream对象,用来操作data, txt文件,操作类型是 aFile. Seek(55, SeekOrigin. Begin) ;/把文件指针指向,从文件开始位置向前55位字节所 指的字节 aFile. Read (byData, 0. 100) ;/读取FileStream对象所指的文件到字节数组里 catch (IOE

14、xception e) ( Console WriteLine(wcloseH); return; Decoder d = Encoding. UTF8. GetDecoder() ; / d. GetChars(byData, 0. byData. Length, charData, 0): /将编码字节数组转换为字符数组 Console WriteLine(charData); Console ReadLineO ; return; 写入文件: using System; using System. Collections Generic; using System .Text; usin

15、g System 10; namespace myFile class Progiam ( static void Main(string args) ( byte byData = new byte 100: / 建立一个 FileStr earn 要用的字节组 chart charData = new char 100: /建立一个字符组 try FileStream aFi le = new Fi 1 eStream(H./Data, txtFi 1 eMode. Open) ;/实例 化一个FileStream对象,用来操作data, txt文件,操作类型是 charData =我是谁

16、? 111? ff. ToCharArray();将字符串的字符复制到字符组里 aFile Seek(0, SeekOrigin. End); Encoder el = Encoding. UTF8. GetEncoderO :/编码器 el. GetBytes(charData, 0, charData. Length. byData, 0 true); aF订e. Write(byData, 0. byData. Length); catch (IOException e) ( Console WriteLine(wcloseH); return; StreamWriter 对像 用Fil

17、eWriter来随机读取文件是个好主意,而用StreamWriter可以直接把字符串写入文件 中,它处理重要的转换和向FileStream对像写入工作。创建StreamWriter有很多方法: FileStream aFile = new FileStream( Logtxt .FileMode. CrestcNew); StreamWriter sw = new StreamWriter(aFile): 也可直接从文件中创建StreamWriter对象: StreamWriter sw = new StreamWriter( Logtxt ,true): 后面这个Boolean值规定是附加文

18、件还是创建新文件,如果此值为false,则就创建一个新 文件,或者截取现有文件并打开它。如果此值设置为true,则打开文件,保留原来的数据, 如果找不到文件,则创建一个新文件。注意:当创建FileStream对象时,您无法得到选项 的围。除了使用Boolean值附加或创建新文件外,我们根本就无法像使用FileStream类时 那样规定FileMode属性;而且,您也无法设置FileAccess属性.因此您总是具有对文件的 读写特权,为了使用任何高级参数,您必须在FileStream构造函数中规定这些参数,然后 在 FileStream 对象中创建 StreamWritero 例: using

19、System; using System. Collections Generic; using System .Text; using System 10; namespace StreamWriterFile ( class Program static void Main(string args) try FileStream aFile = new FileStream(Mdata 1. txt, FileMode. OpenOrCreate):/建立一个 f ileStream 对象 StreamWriter sw = new StreamWriter (aFi le); /用 Fi

20、 1 eStream 对像实例一个 StreamWri ter 对象 su Write(f irst); sw. WriteLine(nhello world! !); /写入字符串,方法WriteLine写入时后面跟一个换行 符 sw. Write (This is a);/写入字符串,方法Write写入时没有换行符 sw. Write(string of characters J; sw. Close ();/用完后必须关闭对像 catch (IOException e) ( Console WriteLine(e. ToStringO); StreamReader 对象 1 读取文件 输

21、入流用于从外部源读取数据,在很多情况下,数据源可以是磁盘上的文件或网络的某些位 置,任何可能发送数据的位置都可以是数摇源,比如网络应用程序,web服务,甚至是控制 台。StreamReader是一个通用类,可以用于任何流;StreamReader对象的创建方式非常类 似于StreamWriter对象的创建方式。 StreamWriter类有两个基本的方法read和readLine Read ()方法将流的下一个字符作为正整数值返回,如果到达了流的结尾处,则返回-1 ReadLing ()方法是读取并返回一行字符,如果返回为空,那么就是到达了流的结尾。 ReadEnd ()方法读小文件最好,它直

22、接读取完整的文件并作为字符串返回。 例: using System; using System Collections Generic; using System .Text; using System IO; namespace StreamReaderTest class Program static void Main(string args) ( string strLine; try ( Console. WriteC请输入文件路径及文件名:): string mess = Console.ReadLineO; FileStream aFile = new FileStream(me

23、ss, FileMode.0pen): StreamReader sr = new StreamReader(aFile):/ 用 FileStream 对 象实例 化一个 StreamReader 对象 /strLine = sr. ReadToEndO :/读取完整的文件,如果用这个方法,就可以不用下面的 while循环 strLine = sr. ReadLine(); / 读取一行字符并返回 while (strLine != null) ( Console. WriteLine(strLine); strLine = sr. ReadLine(): sr. Close (); Console ReadLine(); catch (IOException e) Console WriteLineCan IOexception has been thrown!); Console WriteLine(e. ToStringO); return; return; 2分隔文件 读

温馨提示

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

评论

0/150

提交评论