关于C#中的StreamReader与FileStream这两个类

□简介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.

 

你可能感兴趣的:(C++)