文件操作、流相关类梳理

  平时很少用到文件操作和流,所以每次用的时候都是百度,不明不白,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类似,相反,就不过多少了。

 

  

转载于:https://www.cnblogs.com/MicroHeart/p/11158508.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值