zoukankan      html  css  js  c++  java
  • C# 流总

    本文简单总结在C#编程中经常会用到的一些流;

    比如说FileStream、MemoryStream、 BufferedStream、 NetWorkStream、 StreamReader/StreamWriter、 TextReader/TextWriter等的简单用法。

    一  FileStream类

         FileStream类主要用于读取磁盘上的文件或者向磁盘文件写入信息。有时,我们需要将程序中的一些数据存储到磁盘上或是读取配置文件中某些内容,在这里我们就会用该类。

         从磁盘上的文件中读取内容:

      FileStream file = File.Open(@"E:	est.jpg", FileMode.Open); //初始化文件流
      byte[] array = new byte[file.Length];//初始化字节数组
      file.Read(array, 0, array.Length);//读取流中数据把它写到字节数组中 file.Close();//关闭流
      string str = Encoding.Default.GetString(array);//将字节数组内容转化为字符串

         将数据写入磁盘文件:

      FileStream file = File.Open(@"E:	est.txt", FileMode.Append);//初始化文件流
      byte[] array = Encoding.UTF8.GetBytes("Hello World!你好");//给字节数组赋值
      file.Write(array, 0, array.Length);//将字节数组写入文件流
      file.Close();//关闭流

    二  MemoryStream类

     MemoryStream类主要用于操作内存中的数据。比如说网络中传输数据时可以用流的形式,当我们收到这些流数据时就可以声明MemoryStream类来存储并且处理它们。

     MemoryStream操作字符串:

       string str = "NMS东软医疗";
       byte[] array = Encoding.UTF8.GetBytes(str);
       MemoryStream memory = new MemoryStream(array);
       byte[] arrayNew = memory.ToArray();
       string strNew = Encoding.UTF8.GetString(arrayNew);

    三  BufferedStream类

          BufferedStream类主要也是用来处理流数据的,但是该类主要的功能是用来封装其他流类。为什么要封装其他流类,这么做的意义是什么?按照微软的话说主要是减少某些流直接操作存储设备的时间。对于一些流来说直接向磁盘中存储数据这种做法的效率并不高,用BufferedStream包装过的流,先在内存中进行统一的处理再向磁盘中写入数据,也会提高写入的效率。(处理大文件速度快

          将磁盘上的一个文件写入到磁盘上的另一个文件中:

      FileStream file1 = File.Open(@"F:file1.txt", FileMode.OpenOrCreate, FileAccess.Read);//读取文件流
      FileStream file2 = File.Open(@"F:file2.txt", FileMode.OpenOrCreate, FileAccess.Write);//写入文件流
      byte[] array = new byte[4096];
      BufferedStream bufferedInput = new BufferedStream(file1);//封装文件流
      BufferedStream bufferedOutput = new BufferedStream(file2);//封装文件流
      bufferedInput.Read(array, 0, array.Length);
      bufferedOutput.Write(array, 0, array.Length);
    
      int bytesRead = 0;
      while ((bytesRead = bufferedInput.Read(array, 0, 4096)) > 0)//读取到了数据
      {
         bufferedOutput.Write(array, 0, bytesRead);
         Console.WriteLine(bytesRead);
      }
      bufferedInput.Close();//关闭各种流
      bufferedOutput.Close();
      file1.Close();
      file2.Close();
  • 相关阅读:
    分区助手怎么调整磁盘分区的大小
    3dsmax2014的下载、安装与注册激活教程详解
    U深度U盘启动盘制作工具怎么用?U深度U盘启动盘制作工具使用教学
    CAD出现向程序发送命令时出现问题提示解决方法分享
    TeamViewer——可以实现在手机上随时远程控制你的电脑
    CPU-Z五大主要功能及使用方法初步了解
    vs中更改项目名称注意事项
    Oracle 存储过程例子返回记录集
    oracle 调用包体的函数并返回return值
    oracle 中更新update不成功的原因
  • 原文地址:https://www.cnblogs.com/zjq1989/p/5546649.html
Copyright © 2011-2022 走看看