文件流

1 File的弊端

File只能去操控一个小文件,因为其是一次性全部读写

2 文件流用来操作大文件

(1)FileStream(用来操作字节)

(1) 1、读取数据

FileStream fsRead = new FileStream(@“F:\c#学习视频\11.Net基础班第十一天\0326.Net基础班第十一天\资料\0326.Net基础班第十一天\01复习\bin\Debug\1.txt”, FileMode.OpenOrCreate, FileAccess.Read);
第一个参数表示要操作文件的路径
第二个参数表示对文件做一个怎样的操作
第三个参数表示对文件的数据进行怎样的操作
byte[ ] buffer=new byte[102410242];
int r=fsRead.Read(buffer,0,buffer.length);//返回的int类型表示实际读取的有效字节数
fsRead.Close();//垃圾回收期并不能释放流的资源,所以必须手动
static void Main(string[] args)
{
FileStream fsWrite = new FileStream(@“C:\Users\丁浩然\Desktop\练习.txt”, FileMode.OpenOrCreate, FileAccess.Write);
string s = “今天天气好”;
byte[] buffer=Encoding.Default.GetBytes(s);
fsWrite.Write(buffer,0,buffer.Length);
fsWrite.Close();
fsWrite.Dispose();
Console.Write(“写入成功”);
Console.ReadKey();
}的释放流资源,必须写
fsRead.Dispose();//垃圾回收期并不能释放流的资源,所以必须手动的释放流资源,必须写
string str=Encoding.Default.GetString(buffer,0,r),;//由于我们将数据存到了buffer中,而我们的目的是打印到控制台中,因此要将字节数组转换为字符串类型
Console.WriteLine(str);
Console.ReadKey();

(1)2、写入数据

        static void Main(string[] args)
        {
            FileStream fsWrite = new FileStream(@"C:\Users\丁浩然\Desktop\练习.txt", FileMode.OpenOrCreate, FileAccess.Write);
            string s = "今天天气好";
            byte[] buffer=Encoding.Default.GetBytes(s);
            fsWrite.Write(buffer,0,buffer.Length);
            fsWrite.Close();//手动的释放流资源,必须写
            fsWrite.Dispose();//手动的释放流资源,必须写
            Console.Write("写入成功");
            Console.ReadKey();
        }

(1) 3、Filestream的改进

由于我们在使用FileStream的过程当中,经常会忘记写Close() Dispose(),
所以微软提供给我们更为简单的方法帮助我们关闭流和释放流所占用的资源。
就是将创建FileStream对象的过程写在using(){}当中

        static void Main(string[] args)
        {
            using(FileStream fsWrite = new FileStream(@"C:\Users\丁浩然\Desktop\练习.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
            string s = "今天天气好";
            byte[] buffer=Encoding.Default.GetBytes(s);
            fsWrite.Write(buffer,0,buffer.Length);
            Console.Write("写入成功");
            }
            COnsole.Readkey();
        }

(1)4、使用FileStream对大文件进行复制

 static void Main(string[] args)
        {
            string source = @"F:\c#学习视频\12.Net基础班第十二天\12.Net基础班第十二天\0326.Net基础班第十二天\video\10、总结";
            string target = @"F:\c#学习视频\12.Net基础班第十二天\12.Net基础班第十二天\0326.Net基础班第十二天\资料\new.wmv";
            CopyFile(source, target);
            Console.WriteLine("复制成功");
            Console.ReadKey();

        }
        public static void CopyFile(string source, string target)
        {
            using (FileStream fsRead = new FileStream(source, FileMode.OpenOrCreate, FileAccess.Read))
            {
                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    while (true)
                    {
                        int r = fsRead.Read(buffer, 0, buffer.Length);//本次读取实际读取到的实际字节数
                        fsWrite.Write(buffer, 0, r);//在写入时应该写入实际读取到的有效字节数
                        if (r == 0)
                        {
                            break;
                        }
                    }
                }
            }
        }     

3 StreamWriter 、StreamReader(用来操作字符)

使用StreamReader读数据

        static void Main(string[] args)
        {
            using (StreamReader sr = new StreamReader(@"C:\Users\丁浩然\Desktop\练习.txt",Encoding.Default))
            {
                while(!sr.EndOfStream)
                {
                    string str = sr.ReadLine();//由于ReanLine只读取一行数据,为了使数据全部读取
                    Console.WriteLine(str);    //引入while语句,当流的位置不在结尾时就一直循环
                }
            }
            Console.ReadKey();
        }

使用StreamWriter来写数据

写入时会覆盖

        static void Main(string[] args)
        {
            using (StreamWriter sw = new StreamWriter(@"C:\Users\丁浩然\Desktop\练习.txt"))
            {
                sw.Write("6666666666600");
            }
            Console.WriteLine("写入成功");
            Console.ReadKey();
        }

写入不覆盖

        static void Main(string[] args)
        {
            using (StreamWriter sw = new StreamWriter(@"C:\Users\丁浩然\Desktop\练习.txt",true))
            {
                sw.Write("123");
            }
            Console.WriteLine("写入成功");
            Console.ReadKey();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值