FileStream类
FileStream类用于读/写文件。在FileStream的一些构造函数中,FileMode、FileAccess和FileShare类型被作为参数使用。
1.FileMode参数
FileMode参数控制是否对文件执行覆盖、创建、打开等操作,或执行这些操作的组合。表7-4描述了与FileMode参数类一起使用的常量。
表7-4 FileMode的取值
常 量 |
描 述 |
Open |
用于打开已存在的文件 |
Append |
用于向文件追加内容 |
Create |
创建文件,如果文件存在,它将被改写。 如果文件不存在则使用CreateNew创建, 否则使用Truncate |
CreateNew |
创建新文件,如果文件已经存在, 则将引发IOException |
OpenOrCreate |
文件存在则打开文件,否则新建文件 |
Truncate |
打开现有的文件。文件一旦被打开, 就被截断为零字节大小 |
2.FileAccess枚举
FileAccess枚举为文件的读/写或读/写访问定义了常量。此枚举的FlagsAttribute属性允许按位组合其成员值。在File、FileInfo和FileStream的许多构造函数中,以及在其他有必要控制用户对文件的访问类型的构造函数中都指定了FileAccess参数。
3.FileShare枚举
Fileshare枚举包含一些常量,用于控制其他FileStream对同一文件所具有的访问类型。此枚举的FlgasAttribule属性允许按位组合其成员值。
FileShare枚举的典型用法是定义两个进程是否可以同时从同一个文件中读取。例如,如果文件已经打开并指定了FileShare.Read,则其他用户可打开该文件进行读取,但不能写入。FileShare.write指定了其他用户可同时对同一文件写入;FileShare.None则拒绝文件共享。
例如,FileStream构造函数打开一个现有的文件进行读访问,并允许其他用户同时读取该文件。
- Filestream f=new Filestream(name,FileMode.Open,Fi1eAccess.Read,
- FileShare.Read);
4.使用Seek方法实现对文件的随机访问
FileStream对象使用Seek方法支持对文件的随机访问。Seek方法允许文件流中的读/写位置移动到文件的任意位置。可使用相对于参考点的字节偏移量参数来移动读/写位置。
字节偏移量是相对于查找参考点的,如表7-5中的SeekOrigin类的3个属性所述。
表7-5 SeekOrigin类的3个属性
属 性 名 |
描 述 |
Begin |
查找以流的起始为参考位置 |
Current |
查找以流当前位置为参考位置 |
End |
查找以流的结束点为参考位置 |