Nó nói ở đây msdn.microsoft.com/en-us/library/system.io.stream.read.aspx rằng các phương pháp Stream.Read
và Stream.Write
đều tăng vị trí/bù trừ trong luồng một cách tự động tại sao các ví dụ ở đây là http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx và http://msdn.microsoft.com/en-us/library/system.io.filestream.read.aspx thay đổi bù trừ theo cách thủ công?Đặt độ lệch trong một dòng
Bạn chỉ đặt độ lệch trong vòng lặp nếu bạn biết kích thước của luồng và đặt thành 0 nếu bạn không biết kích thước và sử dụng bộ đệm?
// Now read s into a byte buffer.
byte[] bytes = new byte[s.Length];
int numBytesToRead = (int) s.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to 10.
int n = s.Read(bytes, numBytesRead, 10);
// The end of the file is reached.
if (n == 0)
{
break;
}
numBytesRead += n;
numBytesToRead -= n;
}
và
using (GZipStream stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress))
{
const int size = 4096;
byte[] buffer = new byte[size];
using (MemoryStream memory = new MemoryStream())
{
int count = 0;
do
{
count = stream.Read(buffer, 0, size);
if (count > 0)
{
memory.Write(buffer, 0, count);
}
}
while (count > 0);
return memory.ToArray();
}
}
... Cái gì? –
Có sự khác biệt giữa số bù trong nội bộ trong Luồng và độ dài/độ dài bạn cần quan tâm khi bạn đọc/ghi dữ liệu giữa bộ đệm và luồng và có thể là luồng 2.. – nos
@sehe: Đổ lỗi cho hệ điều hành của bạn. –