C# FileStream文件流

FileStream和File对比

File:是一次性读取或写入文件,对内存的占用率比较高。操作小文件无影响,大文件程序容易卡。
FileStream:是一点点地读取或写入文件,对内存的占用率比较低。操作字节,适合操作大文件。

FileStream创建

FileStream fs = new FileStream(@"文件路径",文件的打开,对文件的操作);

//创建读取流
FileStream fs = new FileStream(@"文件路径",FileMode.Open,FileAccess.Read);
//创建写入流
FileStream fs = new FileStream(@"文件路径",FileMode.OpenOrCreate,FileAccess.Write);

FileStream释放资源

using帮助我们释放FileStream资源

//读取
using(FileStream fsread = new FileStream(path1, FileMode.Open, FileAccess.Read)){
	byte[] buffer = new byte[1024*1024*5];  //创建一个5M的字节数组
	int n = fsread.Read(buffer,0,buffer.Length);  //用5M的字节数组读取文件,返回值为,有效的字节数组长度
	string s = Encoding.UTF8.GetString(buffer,0,n);  //把字节数组转换成字符串,只转换有数据的数组元素,长度为0-n,这样不用访问整个数组。
	Console.WriteLine(s);
}


//写入
using(FileStream fswrite = new FileStream(path2,FileMode.OpenOrCreate,FileAccess.Write)){
	string s = "数据";
	byte[] buffer = Encoding.UTF8.GetBytes(str);  //把字符串转成字节数组
	// byte[] buffer = System.Text.Encoding.UTF8.GetBytes(str);
	fs.Write(buffer,0,buffer.Length);
}

//复制,读取,写入的嵌套使用,需要创建在新方法里
	public static void CopyFile(string path1,string path2)
        {
            using (FileStream fsread = new FileStream(path1, FileMode.Open, FileAccess.Read))
            {
                using (FileStream fswrite = new FileStream(path2,FileMode.OpenOrCreate,FileAccess.Write))
                {
                    byte[] b = new byte[1024 * 1024 * 5];
                    //不断读取,直到数据结尾,结束读取
                    while (true)
                    {
                        int n = fsread.Read(b, 0, b.Length);
                        if (n == 0)
                        {
                            break;
                        }
                        fswrite.Write(b, 0, n);
                    }
                }
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值