C#文件操作之FileStream类详解

首先要明确FileStream类操作的是字节和字节数组

常用构造函数介绍

最简单的构造函数只有两个参数,即文件名和FileMode枚举值

FileStream(fliename , FileMode.)

另一个常用构造函数则有三个参数,第三个参数是FileAccess枚举的一个成员,它指定了流的作用

FileStream(fliename , FileMode. ,FileAccess.)

FileMode枚举成员:

成员 文件存在 文件不存在
Append 打开文件,流指向文件的末尾处,只能与枚举FileAccess.Write结合使用 创建一个新文件。只能与枚举FileAccess.Write结合使用
Create 删除该文件,然后创建新文件 创建新文件
CreateNew 抛出异常 创建新文件
Open 打开文件,流指向文件开头处 抛出异常
OpenOrCreate 打开文件,流指向文件开头处 创建新文件
Truncate 打开文件,清除其内容。流指向文件开头处,保留文件的初始创建日期 抛出异常

FileAccess枚举成员:

成员 说明
Read 打开文件,用于只读
Write 打开文件,用于只写
ReadWrite 打开文件,用于读写

1.文件位置

FileStream类维护内部文件指针,该指针指向文件中进行下一次读写操作的位置。大多数情况下,当打开文件时,它就指向文件的开始位置,但是可以修改此指针,实现此功能的方法是Seek()方法。

Seek()方法有两个参数:第一个参数指定文件指针移动距离(以字节为单位)。第二个参数指定开始计算的起始位置,用SeekOrigin枚举的一个值表示。SeekOrigin枚举包含3个值:Begin、Current和End。

例如:

FileStream file = File.OpenRead("config.txt");

file.Seek(6,SeekOrigin.Begin);//将文件指针移动到文件的第六个字节处,其起始位置就是文件的第一个字节

file.Seek(6,SeekOrigin.Current);//将指针从当前位置移动6个字节

file.Seek(-6,SeekOrigin.End);//将指针移动到文件的倒数第6个字节

2.读取数据

使用Read()方法:从文件中读取数据,再把数据写入一个字节数组。

Read()有三个参数:第一个参数是传入的字节数组,用来存放FileStream对象中的数据,第二个参数是字节数组中开始写入数据的位置,通常是0,第三个参数指定从文件中读取多少字节

FileStream file = new FileStream("home.txt",FileMode.Open);

byte[] byteData = new byte[1024];

file.Seek(10,SeekOrigin.Begin);

file.Read(byteData,0,1024);//从home.txt文件的第10个字节开始读取1024个字节写入byteData字节数组

3.写入数据

使用Write()方法:从字节数组中读取数据,再把数据写入文件中。

和Read()方法一样,Write()方法也是三个参数

上例中已经从home.txt文本中读取了1024个字节到byteData字节数组中,我们再将这个数组的数据写到新的文件中

FileStream newFile = new FileStream("Temp.txt",FileModel.Create);

newFile.Seek(0,SeekOrigin.Begin);

newFile.Write(byteData,0,byteData.Length);//将byteData字节数组里的数据写入到Temp.txt文件中,从第0个字节位置开始

 

你可能感兴趣的:(C#)