【C#IO 操作】stream 字节流|字符流 |比特流
stream的简介
Stream 所有流的抽象基类。 流是字节序列的抽象,例如文件、输入/输出设备、进程中通信管道或 TCP/IP 套接字。 Stream类及其派生类提供这些不同类型的输入和输出的一般视图,并将程序员与操作系统和基础设备的具体详细信息隔离开来。
.net中对于IO流的支持分为两个层次:基于比特的和基于字节两种方式,字符流是基于字节流的,用不同的编码方式读取字节流。
字符流:实现System.IO.TextReader和TextWaiter抽象类是所有基于字符流的父类,以特定编码从字节流中读取字符。
字节流:基于字节的方式适用于操作二进制文件,比如exe文件、视频、音频文件等等。
Stream抽象类是所有基于字节方式的流的父类。
字符流中TextReader和TextWaiter是抽象类是stream的读写器。
stream的操作方式
流涉及三个基本操作:
可以从流中读取。 读取是将数据从流传输到数据结构(如字节数组)中。
可以写入流。 写入是指将数据从数据结构传输到流中。
流可以支持查找。 查找是指查询和修改流中的当前位置。 查找功能取决于流具有的后备存储的类型。 例如,网络流没有当前位置的统一概念,因此通常不支持查找。
继承自的一些常用流 Stream 是 FileStream 、和 MemoryStream 。
根据基础数据源或存储库,流可能只支持其中一些功能。 您可以使用 CanRead 类的、和属性查询流的功能 CanWrite CanSeek Stream 。
Read和 Write 方法读取和写入各种格式的数据。 对于支持查找的流,请使用 Seek 和 SetLength 方法,并使用 Position 和 Length 属性来查询和修改流的当前位置和长度。
此类型实现 IDisposable 接口。 在使用完类型后,您应直接或间接释放类型。 若要直接释放类型,请在
try
/catch
块中调用其 Dispose 方法。 若要间接释放类型,请使用using
(在 C# 中)或Using
(在 Visual Basic 中)等语言构造。 有关详细信息,请参阅 IDisposable 接口主题中的“使用实现 IDisposable 的对象”一节。释放 Stream 对象将刷新所有缓冲数据,并在本质上调用 Flush 方法。 Dispose 还会释放操作系统资源(如文件句柄、网络连接或用于任何内部缓冲的内存)。 BufferedStream类提供了围绕另一个流包装缓冲流以提高读写性能的功能。
从 .NET Framework 4.5 开始, Stream 类包括异步方法来简化异步操作。 异步方法
Async
在其名称中包含,例如 ReadAsync 、、 WriteAsync CopyToAsync 和 FlushAsync 。 利用这些方法,您可以在不阻塞主线程的情况下执行占用大量资源的 i/o 操作。 在 Windows 8.x 应用商店应用或桌面应用中一个耗时的流操作可能阻塞 UI 线程并让应用看起来好像不工作时,这种性能的考虑就显得尤为重要了。 异步方法与async
await
Visual Basic 和 c # 中的和关键字结合使用。在 Windows 8.x 应用商店应用中使用时, Stream 包括两个扩展方法: AsInputStream 和 AsOutputStream 。 这些方法将 Stream 对象转换为 Windows 运行时中的流。 还可以使用和方法将 Windows 运行时中的流转换为 Stream 对象 AsStreamForRead AsStreamForWrite 。 有关详细信息,请参阅 如何:在 .NET Framework 流和 Windows 运行时流之间转换
某些流实现执行基础数据的本地缓冲以提高性能。 对于此类流,可以使用 Flush 或 FlushAsync 方法来清除任何内部缓冲区,并确保所有数据都已写入基础数据源或存储库。
如果需要一个没有后备存储的流 (也称为 "位桶") ,请使用 Null 字段检索为此目的而设计的流的实例。
【C#IO 操作】stream 字节流|字符流 |比特流的更多相关文章
- java的IO操作:字节流与字符流操作
流的概念 程序中的输入输出都是以流形式,流中保存的实际上都是字节文件. 字节流与字符流 字节流的操作: 1)输入:inputStream, 2)输出:outPutStream; 字符流的操作: 1)输 ...
- 八. 输入输出(IO)操作2.面向字符的输入流
字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件. Reader和Writer是java.io包中所有字符流的父类.由于它们都是抽象类,所以应使用 ...
- uniapp中拿到base64转blob对象,或base64转bytes字节数组,io操作写入字节流文件bytes
1. uniAPP中拿到附件的base64如何操作,如word文件 /*** 实现思路:* 通过native.js的io操作创建文件,拿到平台绝对路径* 再通过原生类进行base64解码,拿到字节流b ...
- 八. 输入输出(IO)操作3.面向字符的输出流
面向字符的输出流都是类 Writer 的子类,其类层次结构如图 10-5 所示. 图10-5 Writer的类层次结构图 表 10-3 列出了 Writer 的主要子类及说明. 表 10-3 Writ ...
- .net System.IO之Stream的使用详解
本篇文章是对.Net中System.IO之Stream的使用进行了详细的分析介绍,需要的朋友参考下 Stream在msdn的定义:提供字节序列的一般性视图(provides a generic vie ...
- java.io中流的操作:字节流、字符流
java.io中流的操作:字节流.字符流(1)使用File类打开一个文件(2)通过字节流或字符流的子类指定输出的位置(3)进行读/写操作(4)关闭输入/输出 1.字节流:主要是byte类型数据,以by ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...
- Java之IO流(字节流,字符流)
IO流和Properties IO流 IO流是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键, 因而所有 I/O 的主体实际上是内置在操作系统中的.单独的 ...
- IO流(字节流,字符流,缓冲流)
一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流 这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图: 二:字符字节 ...
随机推荐
- 第57篇-profile实例
之前已经介绍过回边计数和ProfileData与Layout,下面举个具体的例子看下MethodData是怎么利用ProfileData等记录详细的运行时信息的.实例如下: package com.t ...
- 使用Xamarin开发移动应用示例——数独游戏(四)产生新游戏算法改进
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们使用一个数组保存预制的游戏,然后随机从中抽取一个游戏作为新游戏,如果 ...
- python网络爬虫-解析网页(六)
解析网页 主要使用到3种方法提取网页中的数据,分别是正则表达式.beautifulsoup和lxml. 使用正则表达式解析网页 正则表达式是对字符串操作的逻辑公式 .代替任意字符 . *匹配前0个或多 ...
- Java多线程专题4: 锁的实现基础 AQS
合集目录 Java多线程专题4: 锁的实现基础 AQS 对 AQS(AbstractQueuedSynchronizer)的理解 Provides a framework for implementi ...
- 【h5游戏开发】egret引擎p2物理引擎 - 小球碰撞地面搞笑的物理现象
重力的方向和地面的问题 p2中默认的方向是从上到下,如果重力默认是正数的话,物体放到世界中是会从上面往下面飘的 p2中plane地面默认的方向是y轴的方向,而在p2中y轴的方向默认是从上往下 首先来看 ...
- 「JOI 2014 Final」裁剪线
做法一 首先将边界也视作四条裁剪线,整个平面作为一张纸,视存在 \(y = -\infty, y = +\infty, x = -\infty, x = +\infty\) 四条直线. 按照纵坐标依次 ...
- JAVA多线程学习九-原子性操作类的应用
当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2.因为A和B线程在更新变量i ...
- java在访问https资源时,忽略证书信任问题 (转)
java程序在访问https资源时,出现报错sun.security.validator.ValidatorException: PKIX path building failed: sun.secu ...
- iOS应用性能调优的建议和技巧--中高级--王朋
中级(这些是你可能在一些相对复杂情况下可能用到的) 9. 重用和延迟加载Views 10. Cache, Cache, 还是Cache! 11. 权衡渲染方法 12. 处理内存警告 13. 重用大开销 ...
- iOS 启动画面 App图标尺寸 项目上架必须Icon设置
1.1AppIcon图标尺寸如下: 说明:AppIcon (6张) AppStore Icon (1张)(png格式) AppStore Icon --- 1024x1024(必须) 1.2启动画 ...