यह यहां msdn.microsoft.com/en-us/library/system.io.stream.read.aspx कहता है कि Stream.Read
और Stream.Write
विधियां दोनों स्ट्रीम में स्थिति/ऑफसेट को स्वचालित रूप से अग्रिम करते हैं यहां उदाहरण क्यों हैं http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx और http://msdn.microsoft.com/en-us/library/system.io.filestream.read.aspx मैन्युअल रूप से ऑफ़सेट बदल रहा है?स्ट्रीम में ऑफ़सेट सेट करना
क्या आप केवल एक लूप में ऑफसेट सेट करते हैं यदि आप स्ट्रीम के आकार को जानते हैं और इसे 0 पर सेट करते हैं, तो यदि आप आकार को नहीं जानते हैं और बफर का उपयोग नहीं करते हैं?
// 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;
}
और
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();
}
}
... क्या? –
स्ट्रीम में आंतरिक ऑफसेट के बीच एक अंतर है, और जब आप एक बफर और स्ट्रीम के बीच डेटा को पढ़/लिखते हैं, और शायद 2. स्ट्रीम के बारे में देखभाल करने के लिए ऑफसेट/लंबाई की आवश्यकता होती है। – nos
@sehe: अपने ओएस को दोष दें। –