文件I/O

在.net中读写文件的操作是由大量支持数据流概念的类来完成的,所以文件IO又可以称为文件流IO

文件IO涉及到的.net相关类很多,所有这些类都存在于System.IO命名空间中,这里仅对文件IO相关类作一个整体介绍,具体细节及代码范例请参考本地MSDN:

文件和流I/O

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/4f4a33a9-66b7-4cd7-a285-4ad3e4276cd2.htm

 

FileStream类

FileStream是.net中进行文件IO的最低层类,它的父类是Stream

Stream 是所有流的抽象基类。流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。Stream 类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。

FileStream的ReadXXX和WriteXXX只提供了以字节方式(Byte)的读写操作

使用完FileStream对象后要记得Close,或直接使用Using()块

 

BinaryReader/BinaryWriter、StreamReader/StreamWriter类

FileStream或者说Stream类只能进行Byte操作,.net提供了更高级的XXXReader/XXXWriter类,用来进行一些更高级的操作,比如读取数值、布尔、文本。

通常这些类的构造需要一个Stream对象,或者自已在内部创建一个Stream对象,也就是说它们是附在流上的,调用它们的方法,比如StreamWriter的WriterLine,StreamWriter对象会按适当的次序对流进行低级调用,因此可以把这类类看作在流和代码之间起交互作用的实用程序类

可以创建一个Stream,将它传递给XXXReader/XXXWriter对象,也可以使用XXXReader/XXXWriter直接操作文件。使用完对象后记得Close,或者直接使用Using()块,关闭动作会自动关闭其上的Stream对象。

XXXReader/XXXWriter类的另一个优势就是它们能够自动识别不同的编码方式,也可以使用一个Encoding来指定编码方案。

 

File/FileInfo类

它们在MSDN中有一个共同的说明:提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。

区别:

File 类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象,可考虑改用 FileInfo 的相应实例方法,因为并不总是需要安全检查。

File 方法都要求当前所操作的文件的路径,这个路径可以硬编码,也可以通过Directory静态类获得(如Directory.GetFiles返回一个string[]),FileInfo可以通过new取得实例,也可以通过DirectoryInfo类获得(如DirectoryInfo.GetFiles返回一个FileInfo[]),关于Directory和DirectoryInfo的具体应用请参考MSDN

File类提供了AppendXXX、CreateXXX、OpenXXX、ReadAllXXX、WriteAllXXX等一系列方法(没有ReadLine、WriteLine)用于文件的读写操作,其中Append、ReadAll、WriteAll直接读写文件,而Create、Open方法会返回一个FileStream对象(CreateText返回StreamWriter)用于进一步的文件操作

FileInfo类提供了AppendXXX、CreateXXX、OpenXXX(没有WriteXXX)等一系列方法用于文件的度写操作,这些方法基本上都不直接进行文件读写,而是返回FileStream、StreamReader或StreamWriter对象用于进一步的文件操作

 

参考资料:

MSDN

Windows应用高级编程篇-C#编程篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值