<sub id="miph7"></sub>
<table id="miph7"></table>

        1. 文件流FileStream的读写

          1、FileStream文件流的概念:

            FileStream 类对文件系统上的文件进行读取、写入、打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道、标准输入和标准输出。读写操作可以指定为同步或异步操作。FileStream 对输入输出进行缓冲,从而提高性能。——MSDN

            简单点说:FileStream类可以对任意类型的文件进行读取操作,而且我们也可以根据自己需要来指定每一次读取字节长度,以此减少内存的消耗,提高读取效率。

          2、File和FileStream的区别

            直观点:File是一个静态类;FileStream是一个非静态类。

            File:是一个文件的类,对文件进行操作。其内部封装了对文件的各种操作(MSDN:提供用于创建、复制、删除、移动和打开单一文件的静态方法,并协助创建FileStream对象)。

            FileStream:文件流的类。对txt,xml,avi等文件进行内容写入、读取、复制...时候需要使用的一个工具。

            打个形象的比喻。File是笔记本,需要Filestream的这个笔才能写.

            换而言之,记事本是一个文件,可以用File操作,里面的内容需要用FileStream来操作。

          注:FileStream是对字节操作的(任何文件)。

          3、使用FileStream读取数据、使用using帮我们结束后自动释放资源不用写Close()和Dispose()方法。

                  /// <summary>
                  /// 使用FileStream读取文件
                  /// </summary>
                  /// <param name="path">要读取的文件路径</param>
                  /// <param name="str"></param>
                  public static string FileStreamRead(string path)
                  {
                      using (FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
                      {
                          byte[] buffer = new byte[1024*1024*5];//每次读取5M长度
                          int r=  fsRead.Read(buffer, 0, buffer.Length);//返回本次实际读取到的有效字节数
                          string str = Encoding.UTF8.GetString(buffer, 0, r);//使用utf-8编码格式
                          return str;
                      }
          
                  }    
          

            

          4、使用FileStream写入数据

           1         /// <summary>
           2         /// 使用FileStream写入数据
           3         /// </summary>
           4         /// <param name="path">要写入文件的路径</param>
           5         /// <param name="str">要写入的字符串</param>
           6         public static void FileStreamWrite(string path,string str)
           7         {
           8             using (FileStream fsWrite = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
           9             {
          10                 byte[] buffer = Encoding.UTF8.GetBytes(str);
          11                 //使用utf-8编码格式
          12                 fsWrite.Write(buffer, 0, buffer.Length);
          13             }
          14 
          15         }

          无论是读还是写,都要借助一个缓冲区buffer来存取字节。

          注意:在写入和读取时,字符编码格式要相同,不然会出现乱码。

           Encoding.UTF8.GetBytes(str);
           Encoding.UTF8.GetString(b, 0, r);
          相关文章
          相关标签/搜索
          二四六天天好彩免费资枓大全