我对逐渐将文件读入缓冲区的步骤感到困惑.
来自MSDN文档
public abstract int Read(
byte[] buffer,
int offset,
int count
)
Run Code Online (Sandbox Code Playgroud)
源自C#的例子
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try
{
int length = (int)fileStream.Length; // get file length
buffer = new byte[length]; // create buffer
int count; // actual number of bytes read
int sum = 0; // total number of bytes read
// read until Read method returns 0 (end of the stream has been reached)
while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
sum += count; // sum is a buffer offset for next reading
Run Code Online (Sandbox Code Playgroud)
我可以说该行fileStream.Read(buffer, sum, length - sum)读作" 从(偏移)读取到(要读取的总字节数)fileStreamsumlength - sumbuffer ".好的,所以在开始时,当sum= 0时,我将有效地将整个fileStream读入缓冲区1短,但我认为情况并非如此.也许可以Read()将任何可能的内容读入缓冲区?然后返回,以便你可以Read()再次?我有点困惑.
Jon*_*eet 13
Read将读取任何可用的内容(阻塞直到某些内容可用)但是可能没有足够的数据准备填充缓冲区以开始.
想象一下,通过网络下载数据 - 可能有数兆字节的数据要下载,但只有部分数据可供下载.所以你需要继续打电话,Read()直到你读到你想要的东西.
Stream.Read将最多读取您要求的字节数,但可以轻松读取.诚然本地文件流,我怀疑它总是读就像你自找的,除非该文件是短,但是这不是流的真正在一般情况下,我不相信这是保证即使是本地文件流.