我在这里使用msdn示例: http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx
我将FileStream更改为MemoryStream并且它不读取字节
当我将其更改回FileStream时,它可以正常工作。
有任何线索吗?
由于
CompressMemoryStream();
Stream requestStream = _request.EndGetRequestStream(ar);
const int bufferLength = 2048;
byte[] buffer = new byte[bufferLength];
int count = 0;
int readBytes = 0;
do
{
//MemoryStream _compressedOutStream
//is created/filled by 'CompressMemoryStream()'
readBytes = _compressedOutStream.Read(buffer, 0, bufferLength);
requestStream.Write(buffer, 0, readBytes);
count += readBytes;
}
while (readBytes != 0);
requestStream.Close();
state.Request.BeginGetResponse(
new AsyncCallback(EndGetResponseCallback),
state
);
答案 0 :(得分:3)
循环第一次迭代时readBytes
的值是多少?
我的第一个猜测是你犯了我经常犯的错误:写一个流,然后在开始从它回读之前忘记将它倒回到开头。如果是这种情况,那么readBytes
在第一个(也是唯一的)循环迭代中将为零,因为你在流的末尾 - 没有什么可读的。
在开始阅读之前尝试设置stream.Position = 0
。