System.IO 命名空间包含允许:读写文件、数据流的类型以及提供基本文件和目录支持的类型。

在这个命名空间中主要的类有:

  • 字节流:Stream、BufferedStream、MemoryStream、UnmanagedMemoryStream、FileStream
  • 二进制IO流:BinaryReader、BinaryWriter
  • 字符IO流:TextReader、TextWriter、StreamReader、StreamWriter、StringReader、StringWriter
  • 文件系统操作:File、Path、Directory、FileSystemInfo、FileInfo、DirectoryInfo、DriveInfo
  • IO枚举:FileAccess、FileAttributes、FileOptions、FileShare、FileMode、SearchOption、SeekOrigin、DriveType
  • IO异常:IOException、FileLoadException、DriveNotFoundException、FileNotFoundException、DirectoryNotFoundException、PathTooLongException、EndOfStreamException

字节流:

Stream:是所有流的抽象基类。流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。

流涉及三个基本操作:(1)可以读取流(2)可以写入流(3)可以支持查找。流可能只支持这些功能中的一部分,通过使用 CanRead、CanWrite 和 CanSeek 属性,应用程序可以查询流的功能。在实现 Stream 的派生类时,必须提供Read和Write方法的实现。异步方法 BeginRead 、EndRead 、BeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。不要重写Close方法,而应将所有清理逻辑放入Dispose方法中。

FileStream:代表了能够访问一个文件 的IO流。FileStream 对输入输出进行缓冲,从而提高性能,因此不需要像Java那样利用流的包装来达到缓冲的目的。FileStream 对象支持使用 Seek 方法对文件进行随机访问。文件使用完之后必须确保调用FileStream的Dispose方法,特别是在磁盘空间有限的环境中。

BufferedStream:给另一流上的读写操作添加一个缓冲层。它是密封类,无法继承。缓冲区可提高读取和写入性能。使用缓冲区可进行读取或写入,但不能同时进行这两种操作。

MemoryStream:创建支持存储区为内存的流。它创建的流以内存而不是磁盘或网络连接作为支持存储区。MemoryStream 封装以无符号字节数组形式存储的数据,该数组在创建 MemoryStream 对象时被初始化,或者该数组可创建为空数组。可在内存中直接访问这些封装的数据。

UnmanagedMemoryStream:提供从托管代码访问非托管内存块的能力。

二进制IO流:

BinaryReader:用特定的编码从一个输入流中读取二进制数据,默认是UTF-8编码。
BinaryWriter:用特定编码以二进制格式向输出流中写入简单数据类型,默认是UTF-8编码。
 
字符IO流:
TextReader:是读取字符数据的抽象基类,是StreamReader和StringReader的基类。
TextWriter:是写入字符数据的抽象基类,是StreamWriter和StringWriter的基类。
 
文件系统操作:
 
DirectoryInfo、FileInfo:都继承于抽象基类FileSystemInfo,它们都是密封类,无法继承。
DriveInfo:也是密封类,无法继承,但是它不是继承于FileSystemInfo,而是object。
File、Directory、Path:它们都是静态的工具类,用于操作文件、目录和路径。
 
IO枚举:
IO异常:

c# 命名空间之System.IO(继承关系)的更多相关文章

  1. System.IO之内存映射文件共享内存

    内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,就 像操作进程空间里的地址一样了,比如使用c语言的memcpy等内存操作的函数.这种方法能够很好的应用在需要频繁处理一个 ...

  2. 命名空间System.IO

    基本介绍:System.IO 命名空间提供读写文件和数据流的类型.基本文件和目录支持的类型. 原文:http://blog.sina.com.cn/s/blog_48a45b950100erhz.ht ...

  3. System.IO命名空间下常用的类

    System.IO System.IO.Directory 目录 System.IO.Path 文件路径(包含目录和文件名) System.IO.FileInfo 提供创建.复制.删除.移动和打开文件 ...

  4. 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试

    原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...

  5. C# System.IO和对文件的读写操作

      System.IO命名空间中常用的非抽象类 BinaryReader 从二进制流中读取原始数据 BinaryWriter 从二进制格式中写入原始数据 BufferedStream 字节流的临时存储 ...

  6. 第一篇:初识ASP.NET控件开发_第一节:控件类及其继承关系

    1)System.Web.UI.Control(以下简称Control) Control 类是包括自定义控件.用户控件和页在内的所有 ASP.NET 服务器控件的基类..定义由所有 ASP.NET 服 ...

  7. System.IO 二

    接着上篇的来  System.IO FileSystemWatcher    指向这个签名的方法   可以监听目录发生了什么事件 例如: static void Main(string[] args) ...

  8. 深入Spring Boot:ClassLoader的继承关系和影响

    前言 对spring boot本身启动原理的分析, Spring boot里的ClassLoader继承关系 可以运行下面提供的demo,分别在不同的场景下运行,可以知道不同场景下的Spring bo ...

  9. .net System.IO.Stream 流操作类(FileStream等)

    Stream 是所有流的抽象基类.流是字节序列的抽象概念. 流涉及到的3个基本操作: 读取流,读取是指从流到数据结构(如字节数组)的数据传输. 写入流,写入是指从数据结构到流的数据传输. 流查找,查找 ...

随机推荐

  1. oracle--dump 事务槽

    01,创建环境 SQL> create table t3 (id int); Table created. SQL); row created. SQL); row created. SQL); ...

  2. nginx常用配置3

    ## 六.浏览器本地缓存配置 语法:expires 60 s|m|h|d ```动静分离效果: server { listen 80; server_name localhost; location ...

  3. PHP面向对象的基本思路

    第一步:识别对象 ——任何实体都可以被识别为一个对象 第二步:识别对象的属性 ——对象里面存储的数据被识别为属性 ——对于不同的业务逻辑,关注的数据不同,独享里面存储的属性也不同 第三步:识别对象的行 ...

  4. Android ListView分组显示

    ListView的实现方法也是普通的实现方法.只不过在list列表中加入groupkey信息.在渲染的时候要判断是否是分组的标题. 就是在使用不同的两个View的时候存在这种情况,convertVie ...

  5. 前端emmet插件的一些常用用法

    以下是在webstorm中简单使用emmet插件,注意一点就是当编写完emmet命令后一定要把光标移动到命令的结尾处,不然生成的代码会不一样 <!DOCTYPE html> <htm ...

  6. 模拟登陆Github示例

    首先进入github登录页:https://github.com/login 输入账号密码,打开开发者工具,在Network页勾选上Preserve Log(显示持续日志),点击登录,查看Sessio ...

  7. touch-slide-image

    用htmls5+css3实现的在android和ios,以及wekit新版浏览器上实现手指滑动切换图片. https://github.com/navyxie/touch-slide-image

  8. step6: item与pipeline

    目的:提取内容进行格式化输出,类似于字典 编写item文件 class JobBoleArticleItem(scrapy.Item): title = scrapy.Field() #支持传进任何数 ...

  9. C#操作Redis SortedSet 有序集合

    /// <summary> /// Redis 有序集合 /// </summary> public static void Redis_SetSorted() { Redis ...

  10. 点击checkbox全选,其它被选中,再点击取消

    <input type="checkbox" value="" id="checkall" name="" siz ...