zoukankan      html  css  js  c++  java
  • 文件操作、流相关类梳理

      平时很少用到文件操作和流,所以每次用的时候都是百度,不明不白,Copy过去就行了,中间也有去整理,由于没有记笔记,用得少,一段时间又忘记了。这次来一次彻彻底底的梳理。

    一、继承关系图

    二、文件和文件夹操作类

      File和FileInfo:是文件操作类,可以对文件进行创建、修改、删除、移动等,只要对文件能进行的操作都有提供。

      Directory和DirectoryInfo:是文件夹操作类,提供了创建、删除、移动文件夹,获取文件夹的子文件夹等。

      其中File和Directory都是静态类。区别在于File和Directory在操作同一个文件/文件夹的时候,每次都会进行安全检查。而FileInfo和DirectoreyInfo在操作同一个文件/文件夹的时间,只会检查一次。

     三、Writer操作类

      Writer相关类:

        顾名思义,Writer相关类都是写入到流、字符串中。下面几种Writer就与之对应。

      3.1 BinaryWriter:

        构造函数需要传递Stream,而BinaryWriter就是将二进制写入到此流中去,如果这个流是通过文件获得,则文件就会写到文件中。如果流通过内存获得,就会写入到内存中。

                byte[] data = new byte[10];
                using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(@"c:1.txt", FileMode.Create)))//流从文件中获取,写入流也就是写入文件
                {
                    binaryWriter.Write("a");
                    binaryWriter.Write(56);
                    binaryWriter.Write(false);
                    binaryWriter.Write(data);
                    binaryWriter.Write('b');
                    binaryWriter.Flush();
                }
    
                using (MemoryStream memoryStream = new MemoryStream())//流从内存中获取,写入流也就是写入内存中
                {
                    BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
                    binaryWriter.Write("a");
                    binaryWriter.Write(56);
                    binaryWriter.Write(false);
                    binaryWriter.Write(data);
                    binaryWriter.Write('b');
                    binaryWriter.Flush();
    
                    data = new byte[10];
                    memoryStream.Seek(0, SeekOrigin.Begin);
                    memoryStream.Read(data, 0, (int)memoryStream.Length);
                }

      3.2 StreamWriter:

        构造函数需要传递Stream或者文件路径。跟BinaryWriter很像,主要方法也是Write方法,而且他的Write方法跟BinaryWriter一样,它的写入对象也是流。

                using (StreamWriter streamWriter = new StreamWriter(File.Open(@"c:3.txt", FileMode.Create)))
                {
                    streamWriter.Write("a");
                    streamWriter.Write(56);
                    streamWriter.Write(false);
                    streamWriter.Write(data);
                    streamWriter.Write('b');
                    streamWriter.Flush();
                }

    StreamWriter和BinaryWriter的区别:

       BinaryWriter:查看源码可以看到,在写入流之前,会将Int、Double、decimal、long、float的值转为字节数组,然后写入文件流。在写入string类型的,会将String类型变为四个无符号整数,这就导致在打开二进制文本的时候前面多个0100 打开文本显示的是ETO。BinaryWriter本质上将二进制写入流中。

         StreamWriter:所见即所得。你写入文件中流的内容,打开文件和你看到的一样。而BinaryWriter写入到文件,打开是会乱码的。

       3.3 StringWriter:

        构造函数需要传递StringBuilder,将数据写入到StringBuilder中。所以StringWriter只能对字符串操作。

    四、Reader操作类

       跟Writer类似,相反,就不过多少了。

      

  • 相关阅读:
    极简代码搞定视频剪辑
    python 遍历本地文件
    安装Anaconda需要知道的pc信息
    ng4 路由多参数传参以及接收
    Js之设置日期时间 判断日期是否在范围内
    VsCode显示左边折叠代码+-按钮
    H5+.Net Webapi集成微信分享前后端代码 微信JS-SDK wx.onMenuShareTimeline wx.onMenuShareAppMessage
    压测工具之JMeter之环境配置及运行
    C# 交集、差集、并集、去重
    Nginx初学者指南
  • 原文地址:https://www.cnblogs.com/MicroHeart/p/11158508.html
Copyright © 2011-2022 走看看