常用类库--IO操作
IO操作
C#将文件视为一个字节序列,以流的方式对文件进行操作。流是字节序列的抽象概念。
文件和流之间既有区别又有联系。
文件是在各种驱动器上(可移动磁盘、硬盘、CD 等)永久或临时存储的数据的有序集合,是进行数据读写操作的基本对象。文件通常具有文件名、所在路径、创建时间、访问权限等基本属性。
流非常类似于单独的磁盘文件,同时也是进行数据读取操作的对象。流提供了连续的字节存储空间,通过流可以向后备存储器写入数据,也可以从后备存储器中读取数据。虽然数据实际的存储位置可以不连续,甚至可以分布在多个磁盘上,但是用户看到的是封装后的数据结构,是连续的字节流。
与IO操作相关的枚举
FileMode,表示文件的打开方式,枚举取值包括:
取值 |
说明 |
Append |
以追加方式打开文件,如果文件存在则在尾部追加,否则创建一个新文件 |
Create |
创建并打开一个新文件,如果文件已经存在则覆盖旧文件 |
CreateNew |
创建并打开一个新文件,如果文件已经存在则发生异常 |
Open |
打开现有文件,如果文件不存在则发生异常 |
OpenOrCreate |
打开或创建一个文件,如果文件已经存在则打开它,否则创建并打开一个新文件 |
Truncate |
打开现有文件,并清空文件内容 |
SeekOrigin,表示以什么为基准来计算文件流中的偏移量,枚举取值包括:
取值 |
说明 |
Begin |
从文件流的起始位置计 |
Current |
从文件流的当前位置计 |
End |
从文件流的结束位置计 |
FileAccess,表示对文件的访问权限,枚举取值包括:
取值 |
说明 |
Read |
对文件拥有读权限 |
Write |
对文件拥有写权限 |
ReadWrite |
对文件同时拥有读写权限 |
FileShare,表示文件的共享方式,枚举取值包括:
取值 |
说明 |
None |
禁止任何形式的共享 |
Read |
读共享,打开文件后允许其他进程对文件进行读操作 |
ReadWrite |
读写共享,打开文件后允许其他进程对文件进行写操作 |
Write |
写共享,打开文件后允许其他进程对文件进行写操作 |
FileAttributes,表示文件的类型,枚举取值包括:
取值 |
说明 |
取值 |
说明 |
Archive |
存档文件 |
Compressed |
压缩文件 |
Device |
设备文件 |
Directory |
目录 |
Encrypted |
加密文件 |
Hidden |
隐藏文件 |
Normal |
普通文件 |
NotContentIndexed |
无索引文件 |
Offline |
脱机文件 |
ReadOnly |
只读文件 |
ReparsePoint |
重分析文件 |
SparseFile |
稀疏文件 |
System |
系统文件 |
Temporary |
临时文件 |
DriveType,表示驱动器类型,枚举取值包括:
取值 |
说明 |
取值 |
说明 |
CDRom |
CD-ROM驱动器 |
Fixed |
固定磁盘驱动器 |
NetWork |
网络驱动器 |
NoRootDirectory |
不含根目录的驱动器 |
Ram |
RAM闪存驱动器 |
Removable |
可移动存储设备 |
Unknown |
驱动器设备类型未知 |
|
|
DriveInfo类
用于对驱动器进行操作
DirectoryInfo类
用来描述一个文件夹对象。
Directory类
用于操作目录类(静态类)。
FileInfo类
用来描述一个文件对象。
File类
用于操作文件(静态类)。
Path类
对文件或目录的路径进行操作的类。
Stream类
流是以序列的方式对数据进行操作,因此支持长度和当前位置的概念。Stream支持同步和异步地数据读写。在同步操作中,一个流对象只有一个当前位置,不同的程序或进程都在当前位置进行读写;而在异步操作中,不同的程序或进程可以在不同位置上进行读写,当然这需要文件的共享支持。
FileStream
文件流,对文件进行读写操作
文件流FileStream支持同步和异步文件读写,它还可以使用输入输出缓存以提高性能。
使用完FileStream对象后,一定不要忘记使用Close方法来关闭文件流,否则不仅会使别的程序不能访问该文件,还可能导致文件损坏。
打开文件,同时对该文件创建了读写器,则在关闭时,先关闭StreamWriter才能关闭StreamReader,最后才能关闭文件
StreamReader
对文本文件的读取
StreamWriter
用于对文本文件的写入操作
什么是文本文件?
直接用字符串格式存储。即,使用记事本打开文件时,不会出现乱码。
GZipStream
压缩流