C#文件操作

C#文件操作

5 年前 · 来自专栏 C#相识相知

一:文件操作和核心类

文件是任何应用程序开发时必不可少的操作,.Net框架下提供的文件操作基本都位于 System.IO 命名空间下,下面我们详细的介绍文件操作的核心类。

1.1 File和FileInfo类

这两个类用来操作硬盘上的文件,File类主要通过静态方法实现,而FileInfo类则是通过实例方法实现的。

FIleInfo类的实例成员提供了与FIle类差不多的功能,大多数情况下,他们可以相互互换使用,但是由于FIle类提供的方法都是静态方法,使用频率居多。

以上代码通过File.Exists方法判断指定路径下的文件是不是存在,如果文件存在,则直接调用File.Open将文件打开,否则将调用Create方法创建一个文件。然后,代码会初始化一个StreamWriter对象,然后向文本中写入字符串操作。最后,程序会通过调用Flush方法清空缓冲区,然后将所有的缓冲区数据写入文件,并且调用CLose方法关闭数据流。

1.2 Directory和DirectoryInfo类


这两个类都包含了一组用来创建,移动,删除和枚举所有目录或者子目录的成员,如下表所示:

DirectoryInfo功能与这个类似,大多数情况下两者可以互换使用。

1.3遍历一个文件夹下所有的文件

1.4 流Stream使用
流可以理解为内存中的字节序列,Stream是所有流的抽象基类,每个具体的存储实体都可以通过Stream派生类来实现。如FileStream就是这种存储实体。同样,流也涉及三个基本操作。

对流进行读取:将流中的数据读取到具体的数据结构中
对流进行写入:把数据结构中的数据写入到流中
对流进行查找:对流内的当前位置进行查询和修改

Stream类的一些常用成员如下表所示:

其中Stream有几个常见的派生类,
NetworkStream,FileStream,MemoryStream,GZipStream.

• NetworkStream提供网络通信的基础数据流

• FileStream用于将数据以流的形式写入文件,或者从文件中读取
• MemoryStream用于对内存中的数据进行写入或者读取

• GZipStream提供用于压缩和解压缩的数据流

以上代码首先调用File.Open方法来创建一个FileStream实例对象,然后调用Write方法把字符串的字节数组写入到流中,接着调用Seek方法重置流内部的位置,最后调用Read方法将数据从流中读取到字节数组,并把写入的信息输出到控制台。
System.IO 命名空间提供了不同的读写器,以对流中的数据进行操作。这些类通常是成对出现的:一个从流中读取数据,另外一个写入数据。

1.5 文件异步操作


前面对文件的操作都是同步的,在同步操作中,如果向文件中写入大量数据,方法将一直处于等待状态,直到写入完成。若是使用异步操作,方法就可以在写入操作的同时继续执行后面的操作。下面以FileStream为例子,介绍对文件进行异步操作的方法。
FileStream共有15个构造函数,其中只有一个构造函数可以指定异步操作,该构造函数的定义如下:

FileStream(string path,FileMode mode,FileAccess
access,FileShare share,int bufferSize,bool useAsync)

最后一个参数useAsync用于指定程序使用的是异步还是同步,如果设置为true,异步方式来设置FileStream。





































































发布于 2018-08-04 17:07

文章被以下专栏收录

    C#相识相知

    C#相识相知

    C#是一个现代的、通用的、面向对象的编程语言