FileStream类的一些用法

来源:互联网 发布:mac 打开多个终端 编辑:程序博客网 时间:2024/05/21 11:30

引用命名空间

using System.IO;

首先介绍下FileStream和File的区别

例如,我们要读取一个很大的文件,然后将文件的内容通过控制台打印出来。

File:将文件一下子全部读出来,然后打印到控制台。

File缺点:消耗内存比较大

FileStream:先读一点文件,然后打印到控制台,再继续读一点文件,再打印到控制台,如此循环,直到读完为止。

FileStream优点:消耗内存比较小

一、读取文件

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

 声明一个FileStream类的对象

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

参数:

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

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

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

       FileStream.Read(byte[] array, int offset, int count)方法是从文件中读取数据,再把数据写入一个字节数组
参数:
array:用来存储FileStrem对象读取到的数据

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

count:表示从文件中读取多少字节

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

<strong> </strong>//声明一个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();



0 0
原创粉丝点击