C#基础学习之FileStream

FileStream和File的区别  后者比前者给内存带来压力大。

FileStream可以操作字节也就是可以保存任何类型的文件。

1.FileStream读文件操作

            //OpenOrCreate:有就打开,没有就创建
            //FileStream 3个参数的含义: 1.path 2,针对文件什么操作,3针对文件内容怎么操作
            FileStream fsRead = new FileStream(@"D:extension_6_12.crx", FileMode.OpenOrCreate, FileAccess.Read);
            byte[]buffer=new byte[1024*1024*5];//1024*1024*5 只读取5M,不要写太大比如8G 那就内存溢出了。
            //if file byte.length=3.8M 
            //返回本次实际读取的有效字节数。

            int r=fsRead.Read(buffer, 0, buffer.Length);//从0读,到最大内容长度5M.
            //将字节数组解码成字符串
            
            string s = Encoding.Default.GetString(buffer,0,r); //只解码内容的部分
            //关闭,GC垃圾回收处理器不会自己自动回收
            fsRead.Close();
            //释放资源
            fsRead.Dispose();
            Console.WriteLine(s);
            Console.ReadKey();

  

2.FileStream写文件操作

            // 使用FileStream写入数据
            using (FileStream fs=new FileStream(@"D:\new.txt",FileMode.OpenOrCreate,FileAccess.Write))
            {
                string str="666666666666666666666";
                byte[] buff = Encoding.UTF8.GetBytes(str);
                fs.Write(buff,0,buff.Length);//如果文件存在那么将,一个一个字符覆盖文件
            }
            Console.WriteLine("写入文件");
            Console.ReadKey();

3.多媒体文件的复制

将多媒体文件读出来,让后写入到另一个文件

            string source = @"c:\zumba.mp3";
            string targetSource = @"D:\zumba.mp3";
            using (FileStream fsRead=new FileStream(source,FileMode.OpenOrCreate,FileAccess.Read))  
            {
                using (FileStream fsWrite=new FileStream(targetSource,FileMode.OpenOrCreate,FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 6]; //最多读取6M
                    //文件比较大所以循环读取
                    //返回本次读取实际取代的字节数。
                    while (true)
                    {
                        int r = fsRead.Read(buffer, 0, buffer.Length);
                        //如果返回长度0意味着读取完毕
                        if(r==0)
                        {
                            break; 
                         }
                        fsWrite.Write(buffer, 0, r);
                    }
                }       
            }

  

原文地址:https://www.cnblogs.com/c-x-a/p/7742377.html