命名空间System.IO
基本介绍:System.IO 命名空间提供读写文件和数据流的类型、基本文件和目录支持的类型。
原文:http://blog.sina.com.cn/s/blog_48a45b950100erhz.html
http://edu.cnzz.cn/201510/977513da.shtml
主要的类
- 字节流: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、FilenameOptions、FileShare、 FileMode、SearchOption、SeekOrigin、DirveType
- IO异常:IOException、FileLoadException、DriveNotFoundException、FileNotFoundException、 DirectoryNotFoundException、PathTooLongException、EndOfStreamException
C#文件的输入输出
文件 是存储在磁盘中带有指定名称和目录路径的数据集合。当打开文件进行读写时,它变成一个 流。
从根本上说,流是通过通信路径传递的字节序列。有两个主要的流:输入流 和 输出流。输入流用于从文件读取数据(读操作),输出流用于向文件写入数据(写操作)。
C#IO类
System.IO 命名空间有各种不同的类,用于执行各种文件操作,如创建和删除文件、读取或写入文件,关闭文件等。下表列出了一些 System.IO 命名空间中常用的非抽象类:
字节流
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异常
FileStream 类
System.IO 命名空间中的 FileStream 类有助于文件的读写与关闭。该类派生自抽象类 Stream。
您需要创建一个 FileStream 对象来创建一个新的文件,或打开一个已有的文件。创建 FileStream 对象的语法如下:
FileStream <object_name> = new FileStream( <file_name>,
<FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);
例如,创建一个 FileStream 对象 F 来读取名为 sample.txt 的文件:
FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
实例:下面的程序演示了 FileStream 类的用法:
C# 高级文件操作
上面的实例演示了 C# 中简单的文件操作。但是,要充分利用 C# System.IO 类的强大功能,您需要知道这些类常用的属性和方法。
在下面的章节中,我们将讨论这些类和它们执行的操作。请单击链接详细了解各个部分的知识:
文本文件的读写:它涉及到文本文件的读写。StreamReader和StreamWriter类有助于完成文本文件的读写。
二进制文件的读写:它涉及到二进制文件的读写。BinaryReader和BinaryWrite类有助于完成二进制文件的读写。
Windows文件系统的操作:它让C#程序员能够浏览并定位windows文件和目录。
命名空间System.IO的更多相关文章
- c# 命名空间之System.IO(继承关系)
System.IO 命名空间包含允许:读写文件.数据流的类型以及提供基本文件和目录支持的类型. 在这个命名空间中主要的类有: 字节流:Stream.BufferedStream.MemoryStrea ...
- System.IO命名空间下常用的类
System.IO System.IO.Directory 目录 System.IO.Path 文件路径(包含目录和文件名) System.IO.FileInfo 提供创建.复制.删除.移动和打开文件 ...
- System.IO之内存映射文件共享内存
内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,就 像操作进程空间里的地址一样了,比如使用c语言的memcpy等内存操作的函数.这种方法能够很好的应用在需要频繁处理一个 ...
- 详解C#中System.IO.File类和System.IO.FileInfo类的用法
System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...
- System.IO在不存在的路径下创建文件夹和文件的测试
本文测试System.IO命名空间下的类,在不存在的路径下创建文件夹和文件的效果: 首先测试创建文件夹: System.IO.Directory.CreateDirectory(@"C:\A ...
- C# System.IO和对文件的读写操作
System.IO命名空间中常用的非抽象类 BinaryReader 从二进制流中读取原始数据 BinaryWriter 从二进制格式中写入原始数据 BufferedStream 字节流的临时存储 ...
- System.IO.Path文件路径类
Path类的静态属性和方法,此类操作不影响物料文件. 属性 char a = System.IO.Path.VolumeSeparatorChar;//: char b = System.IO.Pat ...
- System.IO 二
接着上篇的来 System.IO FileSystemWatcher 指向这个签名的方法 可以监听目录发生了什么事件 例如: static void Main(string[] args) ...
- C# System.IO 文件流输入输出
一.读写文本文件 可以用fileStream来读写文本文件,但是FileStream是通过字节形式来读写数据的,要把字节数据转换为文本,要自己处理编码转换. 对于文本文件的读写,通常用 StreamR ...
随机推荐
- TCP被动打开 之 第二次握手-发送SYN+ACK
假定客户端执行主动打开,发送syn包到服务器,服务器执行完该包的第一次握手操作后,调用af_ops->send_synack向客户端发送syn+ack包,该回调实际调用tcp_v4_send_s ...
- TCP层accept系统调用的实现分析
inet_csk_accept函数实现了tcp协议accept操作,其主要完成的功能是,从已经完成三次握手的队列中取控制块,如果没有已经完成的连接,则需要根据阻塞标记来来区分对待,若非阻塞则直接返回, ...
- nginx的请求限制
一.http协议的连接与请求 总结: HTTP请求是建立在一次TCP连接的基础之上. 一次TCP请求至少产生一次HTTP请求. 二.连接限制 limit_conn_module 配置语法: Synta ...
- 史上最全SVN 教程
以下博文引用<https://blog.csdn.net/u013067756/article/details/73302758>,再此仅供学习和参考. Svn是什么? SVN(全称Sub ...
- [Hibernate]知识点
本笔记只介绍注解的方法 一.准备工作: a.添加三个pojo类: Product: package pojo; import javax.persistence.*; import java.util ...
- js上拉加载
<ul class="u-f-log"> <li class="u-f-log-alone" v-for="item in log& ...
- python配置主机名
.准备hosts模板 mkdir -p /k8s/profile cat >/k8s/profile/hosts<<EOF 192.168.0.91 test1 192.168.0. ...
- PHP $_SERVER超全局变量
$_SERVER是php中的超全局变量,一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建. ...
- 3-2 LInux文件管理
LInux文件管理 文件系统目录结构 Linux中目录结构是有一定的约定的FHS /bin:存放二进制程序 /boot:启动相关 /dev:设备文件 /etc:配置文件 /home:用户家目录 /li ...
- PHP 註解規則使用方式
/** * 函數名稱 * 函數描述(有些會含HTML代碼) * * @access 變數可存取的權限 (Example: Public or Private) * @api 爲第三方來源的變數 * @ ...