stream~filestream
http://blog.csdn.net/feliciafay/article/details/6157356
http://blog.csdn.net/feliciafay/article/details/6157353
□简介StreamReader
以Stream为服务中心。那么这个stream一定是文件的stream么?不一定,可能是文件的,也可能是其它的,比如从HttpWebResponse转化而来的Stream。
构造函数的两大类
1从stream中读取
StreamReader(Stream) Initializes a new instance of the StreamReader class for the specified stream.
2从File中读取
StreamReader(String) Initializes a new instance of the StreamReader class for the specified file name.
成员函数
1. Peek()
Returns the next available character but does not consume it.
2. Read()
Reads the next character from the input stream and advances the character position by one character.
3. Read(Char[], Int32, Int32)
Reads a specified maximum of characters from the current stream into a buffer, beginning at the specified index.
4. ReadBlock()
Reads a maximum of count characters from the current stream, and writes the data to buffer, beginning at index.
5. ReadLine()
Reads a line of characters from the current stream and returns the data as a string.
6. ReadToEnd()
Reads the stream from the current position to the end of the stream.
StreamReader is designed for character input in a particular encoding, whereas the Stream class is designed for byte input and output. Use StreamReader for reading
lines of information from a standard text file.
□简介 FileStream
是以文件为服务中心的。Exposes a Stream around a file
□FileStream的write()
是把byte[]写入到Stream中
public override void Write(byte[] array,int offset,int count)
array
Type: System.Byte[]
The buffer containing data to write to the stream.
offset是源头的偏移量
Type: System.Int32
The zero-based byte offset in array at which to begin copying bytes to the current stream.
count
Type: System.Int32
The number of bytes to be written to the current stream
return value 无返回值
□例 FileStream的read()
是把Stream读入到byte[]数组中
public override int Read(byte[] array,int offset,int count)
array
Type: System.Byte[]
When this method returns, contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current
source.
offset 是目标的偏移量
Type: System.Int32
The byte offset in array at which the read bytes will be placed.
count
Type: System.Int32
The maximum number of bytes to read.
Return Value
Type: System.Int32
The total number of bytes read into the buffer. This might be less than the number of bytes requested if that number of bytes are not currently available, or
zero if the end of the stream is reached.
小结:
不管是FileStream的read()还是write()操作,offset这个参数永远只是指byte[]数组中的偏移量。具体地说,在read()中,offset指的是目标的偏移量,在write()中,offset指的是源的偏移量。
例
FileStream fsSource = new FileStream(pathSource,FileMode.Open, FileAccess.Read)
byte[] bytes = new byte[fsSource.Length];
int numBytesToRead = (int)fsSource.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// 注意这里的anything这个说法很重要:Read may return anything from 0 to numBytesToRead返回的字节数可能为任意比numBytesToRead小的数。
int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);
// Break when the end of the file is reached.
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
□还有哪些Stream?
BufferedStream
FileStream
MemoryStream
UnmanagedMemoryStream
Stream
StreamReader
StreamWriter
□还有哪些reader和writer?
BinaryReader
Reads primitive data types as binary values in a specific encoding.
BinaryWriter
Writes primitive types in binary to a stream and supports writing strings in a specific
encoding.
TextReader
Represents a reader that can read a sequential series of characters.
TextWriter
Represents a writer that can write a sequential series of characters. This class is abstract.
StringReader
Implements a TextReader that reads from a string.
StringWriter
Implements a TextWriter for writing information to a string. The information is stored in an underlying StringBuilder.
StreamReader
Implements a TextReader that reads characters from a byte stream in a particular encoding.
StreamWriter
Implements a TextWriter for writing characters to a stream in a particular encoding.
1.StreamReader的read()
StreamReader的read()把Stream读入到char[]中。
public override int Read(char[] buffer,int index,int count)
buffer
Type: System.Char[]
When this method returns, contains the specified character array with the values between index and (index + count - 1) replaced by the characters read from the
current source.
index 是目标数组的偏移量
Type: System.Int32
The index of buffer at which to begin writing.
count
Type: System.Int32
The maximum number of characters to read.
Return Value
Type: System.Int32
The number of characters that have been read, or 0 if at the end of the stream and no data was read. The number will be less than or equal to the count
parameter, depending on whether the data is available within the stream.
2.FileStream的read()
FileStream的read()把Stream读入到byte[]数组中
public override int Read(byte[] array,int offset,int count)
array
Type: System.Byte[]
When this method returns, contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current
source.
offset 是目标数组的偏移量
Type: System.Int32
The byte offset in array at which the read bytes will be placed.
count
Type: System.Int32
The maximum number of bytes to read.
Return Value
Type: System.Int32
The total number of bytes read into the buffer. This might be less than the number of bytes requested if that number of bytes are not currently available, or
zero if the end of the stream is reached.
小结:基本相似,但是目标数组的类型不同,一个为char[],一个为byte[]。
stream~filestream的更多相关文章
- C#基础-FileStream
一.FileStream的基础知识 属性: CanRead 判断当前流是否支持读取,返回bool值,True表示可以读取 CanWrite 判断当前流是否支持写入, ...
- MemoryStream和FileStream
一,FileStream对象的数据来自文件,而MemoryStream对象的数据来自内存缓冲区.这两个类都继承自Stream类. 二,抽象基类System.IO.Stream代表流,它提供Read和W ...
- .NET Core装饰模式和.NET Core的Stream
该文章综合了几本书的内容. 某咖啡店项目的解决方案 某咖啡店供应咖啡, 客户买咖啡的时候可以添加若干调味料, 最后要求算出总价钱. Beverage是所有咖啡饮料的抽象类, 里面的cost方法是抽象的 ...
- .NET Core/.NET之Stream简介
之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core/.NET的Streams 首先需要知道, Syst ...
- c#Stream学习笔记
C# 温故而知新:Stream篇(—) http://www.cnblogs.com/JimmyZheng/archive/2012/03/17/2402814.html 基本概念重点看这一篇. 什么 ...
- Stream(流)的基本操作
//把流转化为文件 public static void StreamToFile(Stream stream, string filepath) { byte[ ...
- 【.Net】Byte,Stream,File的转换
引言 文件的传输和读写通常都离不开Byte,Stream,File这个类,这里我简单封装一下,方便使用. 帮助类 public static class FileHelper { / ...
- .NET Core/.NET之Stream简介 Rx.NET 简介
.NET Core/.NET之Stream简介 之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core ...
- 使用C# (.NET Core) 实现装饰模式 (Decorator Pattern) 并介绍 .NET/Core的Stream
该文章综合了几本书的内容. 某咖啡店项目的解决方案 某咖啡店供应咖啡, 客户买咖啡的时候可以添加若干调味料, 最后要求算出总价钱. Beverage是所有咖啡饮料的抽象类, 里面的cost方法是抽象的 ...
随机推荐
- mysql 性能分析套件
#!/usr/local/python3./bin/python3. #!coding:utf- #################################### #目地:用于诊断mysql性 ...
- 利用Azure Automation实现云端自动化运维(3)
Azure automation的认证方式:证书 该种方式是推荐的进行Automation认证的方式,好处在于安全性高,过期时间由自己控制,不好的地方在于大家在Windows上要生成证书比较麻烦, ...
- 基于stm32f103zet6的FAT16文件系统学习1(初识FAT16)
有了之前读写block的基础之后,准备弄个文件系统,之前没有接触过这东西,所以有很多都晕晕的,但是看到fat的源代码之后还是挺有信心的,因为之前一直过uboot,所以这个文件当然是小巫见大巫了.首先来 ...
- 压缩、解压缩流GZipStream
如果要在压缩过程中检查错误或要与其他操作系统所用程序共享压缩数据,则要是用GZipStream类.GZipStream类包含是用GZip数据格式进行压缩和解压缩文件的方法,该类不能用于解压缩大于4GB ...
- shell 脚本文件十六进制转化为ascii码代码
十六进制的A转化为十进制ASCII码: 1 printf "%d\n" "'A" 十六进制的A转化为十六进制ASCII码: 1 printf "%x\ ...
- python刷取CSDN博文访问量之二
python刷取CSDN博文访问量之二 作者:vpoet 注:这个系列我只贴代码,代码不注释.有兴趣的自己读读就懂了,纯属娱乐,望管理员抬手 若有转载一定不要注明来源 #coding=utf ...
- SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确解决方法
问题:[SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确.参数 1 (""): ...
- Scala 函数(五)
函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...
- RMAN数据库恢复之恢复表空间和数据文件
执行表空间或数据文件恢复时,数据库既可以是MOUNT状态,也可以是OPEN状态.1.恢复表空间在执行恢复之前,如果被操作的表空间未处理OFFLINE状态,必须首先通过ALTER TABLESPACE… ...
- visual studio 2010 C语言声明异常
如下这段程序,是C_Primer_plus_第五版内的一个复习题答案(感觉声明i的值有问题),在GCC上面可以运行,但是移植到VS2010就一堆错误, #include<stdio.h> ...