C#文件操作之FileStream类详解

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

常用构造函数介绍

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

FileStream(fliename , FileMode.<Member>)

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

FileStream(fliename , FileMode.<Member> ,FileAccess.<Member>)

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个字节位置开始

 

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用C#FileStream来实现文件的复制操作。具体步骤如下: 1. 创建一个源文件FileStream对象,用于读取源文件的内容。 2. 创建一个目标文件FileStream对象,用于将源文件的内容写入目标文件。 3. 通过源文件FileStream对象读取源文件的内容,并通过目标文件FileStream对象将读取到的内容写入目标文件。 4. 关闭源文件和目标文件FileStream对象。 下面是一个示例代码,演示如何使用FileStream实现文件的复制操作: ```csharp using System.IO; class Program { static void Main(string[] args) { // 源文件路径 string sourceFilePath = @"C:\source.txt"; // 目标文件路径 string targetFilePath = @"C:\target.txt"; // 创建源文件FileStream对象 using (FileStream sourceStream = new FileStream(sourceFilePath, FileMode.Open, FileAccess.Read)) { // 创建目标文件FileStream对象 using (FileStream targetStream = new FileStream(targetFilePath, FileMode.Create, FileAccess.Write)) { // 读取源文件的内容,并将内容写入目标文件 byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = sourceStream.Read(buffer, 0, buffer.Length)) > 0) { targetStream.Write(buffer, 0, bytesRead); } } } } } ``` 在上面的代码,我们首先创建了一个源文件FileStream对象和一个目标文件FileStream对象,然后通过源文件FileStream对象读取源文件的内容,并通过目标文件FileStream对象将读取到的内容写入目标文件。最后,我们关闭了源文件和目标文件FileStream对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值