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[]。