• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

FileStream读写文件

开发技术 开发技术 1天前 5次浏览

FileStream

用于操作字节(所有的文件本质都是字节形式存放的),也就是可以操作任意类型的文件
这个文件流可以用于操作大文件,对内存压力小

StreamReader和StreamWriter:用于操作字符(字符串),方便用于操作文本文件,和FileStream一样,都是用于操作大文件,这个针对文本文件的读写。

FileStream和File类的区别

FileStream和File的区别:有两个水缸,一个空的,一个满水,要把满水的给全部倒入空的里,
File是把水缸扛起来,一次性把所有的水(文件)倒入另一个水缸,(对内存不友好,因为他是把文件一次性读到内存里面)
FileStream则是用勺子,一勺一勺的盛在另一个水缸(对内存友好)


FileStream读取文件

这里先用来读写文本文件举例子

//第一步,创建FileStream的对象
            //FileStream实例化时必须要给构造函数传参数,,一般使用三个参数
            //第一个参数:一般是文件的路径
            //第二个参数,表示针对这个文件做的操作
            //第三个参数,表示你对这个文件里面的数据要进行的操作

            FileStream fileStreamRead = new FileStream(@"C:UsersAdminDesktopTestnew.txt", FileMode.OpenOrCreate, FileAccess.Read);



            //第二步,创建字节数组,用于存放读到的文件,用该数组的长度限定每次读取的文件的大小和数组大小一致
            byte[] buffer = new byte[1024 * 1024 * 5];//每次读取5M到内存中,然后存到该字节数组


            //第三步,调用读取的方法
            //第一个参数,存放字节的数组,
            //第二个参数,开始往字节数组里写入的位置
            //第三个参数,每次读取的字节大小
            //返回值,返回本次实际读取到的有效字节数,比如读一个3.5M的文件,你虽然给的是5M的空间,实际上也只返回3.5
            int r = fileStreamRead.Read(buffer, 0, buffer.Length);



            //第四步,将字节数组中每一个元素按照指定的编码格式解码成想要的格式,这里我们转解码为字符串
            //GetString第一个参数,要解码的数组,第二个参数,从数组的哪个字节开始解码,第三个参数,解码的长度,如果不写第二个和第三个参数,你读的文件小于你数组的长度(小于5M),他会把数组里剩下的也解码成空来填充
            string str = Encoding.Default.GetString(buffer, 0, r);//如果Default读出来乱码可以换成UTF8比如Encoding.UTF8.GetString(buffer, 0, r);


            //第五步,关闭数据流:
            fileStreamRead.Close();

            //第六步,释放流所占用的资源,GC垃圾回收器无法帮我们释放数据流
            fileStreamRead.Dispose();

            //输出
            Console.WriteLine(str);

FileStream写入文件

这里先用来读写文本文件举例子
借用using帮助释放资源,这样就不用手动关闭流和释放流,简化流程

            //第一步,创建FileStream的对象
            using (FileStream fsWrite = new FileStream(@"C:UsersAdminDesktopTestnew.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {


                string str = "看我有没有把你覆盖";//准备写入的数据

                byte[] buffer = Encoding.Default.GetBytes(str);//UTF的编码格式写如:Encoding.UTF8.GetBytes(str);

                //需要的参数和读取的参数差不多
                fsWrite.Write(buffer, 0, buffer.Length);



            }

            Console.WriteLine("写入成功");

程序员灯塔
转载请注明原文链接:FileStream读写文件
喜欢 (0)