FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)介绍

引用命名空间

using System.IO;

一、读取文件

    FileStream 类只能处理原始字节(raw byte)。FileStream 类可以用于任何数据文件,而不仅仅是文本文件。FileStream 对象可以用于读取诸如图像和声音的文件,FileStream读取出来的是字节数组,然后通过编码转换将字节数组转换成字符串。

第一步:声明一个FileStream类的对象

    FileStream fsRead = new FileStream(string path, FileMode mode, FileAccess access);

参数:

path:要操作的文件路径,路径可以是绝对路径或者相对路径。

mode:操作文件的方式,打开或者创建

access:操作文件中的数据,读取或者写入

第二步:调用fsRead对象的方法Read

   FileStream.Read(byte[] array, int offset, int count)方法是从文件中读取数据,再把数据写入一个字节数组

参数:
array:用来存储fsRead对象读取到数据的字节数组

offse:开始读取数据的位置,通常都是0

count:最多读取的字节数

示例:(下面的代码在C#控制台中可运行)

//声明一个FileStream类的对象
FileStream fsRead = new FileStream(@“C:\Users\GuGuoYu\Desktop\新建文本文档.txt”, FileMode.OpenOrCreate, FileAccess.Read);
byte[] buffer = new byte[200];//声明一个字节数组,用来临时存储读取到数据,最大存储200字节
while (true)
{
int r = fsRead.Read(buffer, 0, buffer.Length);//返回本次实际读取到的字节数
if (r == 0)//如果读取到的字节数为0,说明已到达文件结尾,则退出while循环
{
break;
}
string s = Encoding.UTF8.GetString(buffer, 0, r);//将字节数组转换成字符串;buffer:要转换的字节数组;0:第一个要解码的字节的索引;r:要解码的字节数
Console.WriteLine(s);
}
fsRead.Close(); //关闭流
fsRead.Dispose(); //释放流
Console.ReadKey();

二、写入文件

第一步:声明一个FileStream类的对象

    FileStream fsWrite = new FileStream(string path, FileMode mode, FileAccess access);

参数:

path:要操作的文件路径,路径可以是绝对路径或者相对路径。

mode:操作文件的方式,打开或者创建

access:操作文件中的数据,读取或者写入

第二步:调用fsWrite对象的方法Write

   FileStream.Write(byte[] array, int offset, int count)方法是将字节数组数据写入到指定的文本

参数:
array:用来存储字符串转换成字节的字节数组

offse:开始存储的位置,通常都是0

count:最多写入的字节数

using (FileStream fsWrite = new FileStream(“顾国玉的FileStream.txt”, FileMode.Append, FileAccess.Write))
{
Console.WriteLine(“请输入文本”);//提示用户输入字符串
string str = Console.ReadLine();//接受用户输入的字符串
byte[] array = Encoding.UTF8.GetBytes(str);//将字符串转换成字节数组
fsWrite.Write(array, 0, array.Length);//将字节数组写入到文本文件
Console.WriteLine(“写入成功”);
Console.ReadKey();
}

版权声明:转载于「阿顾同学」的原创文章
原文链接:https://blog.csdn.net/u010452388/article/details/51473942

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET中获取指定文件的MD5码 /// <summary> /// 获取指定文件的MD5码 /// </summary> /// <param name="FilePath">文件路径</param> /// <returns>string</returns> private string GetMd5(string FilePath) { byte[] data = File.ReadAllBytes(FilePath); System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] result = md5.ComputeHash(data); string Md5str = BitConverter.ToString(result).Replace("-", ""); return Md5str; } ====================================== .原理剖析: 当某个文件的某段数据改变了,哪怕是变了一个字节,那么这个文件的MD5码就会跟着改变,我的做法非常简单, 就是在文件末尾写入一个UUID码,写入UUID码,这样就确保了这个世界上不会存在MD5一样的文件,除非你 把我这个UUID码拿走去生成这个文件. 关键代码:此处我采用的是边读编写,节省内存,读写完之后,我在末尾将UUID转成byte数组添加到流写入流中,已达到修改文件的目的 ====C# code================= public void CopyToNewFile(string oldFile, string newFile) { //1、创建一个负责读取的流 using (FileStream fsRead = new FileStream(oldFile, FileMode.Open, FileAccess.Read)) { //2、创建一个写入流 using (FileStream fsWrite = new FileStream(newFile, FileMode.OpenOrCreate, FileAccess.Write)) { //3、多媒体文件较大,循环读取 byte[] buffer = new byte[1024 * 1024]; int r = fsRead.Read(buffer, 0, buffer.Length); while (r != 0) { fsWrite.Write(buffer, 0, r);//写入 //返回本次读取实际读取到的字节数 r = fsRead.Read(buffer, 0, buffer.Length); } //通过往源文件末尾添加uuid二进制数据来改变原文件的MD5值 buffer = Encoding.UTF8.GetBytes(Guid.NewGuid().ToString("N")); fsWrite.Write(buffer, 0, buffer.Length); } } } 这种方法理论上支持所有的媒体文件,但不支持文本文件,虽然可以照常运行也可以达到修改MD5的目的,但是你文本内容却已经被我改变了 所以如果你要修改的是文本文件的话,那么这种方法 并不可取,如果是媒体文件,那么没毛病!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值