为什么FileStream会提供FtpWebRequest但不提供MemoryStream?

时间:2010-09-24 19:40:15

标签: c# ftpwebrequest

我在这里使用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
        );

1 个答案:

答案 0 :(得分:3)

循环第一次迭代时readBytes的值是多少?

我的第一个猜测是你犯了我经常犯的错误:写一个流,然后在开始从它回读之前忘记将它倒回到开头。如果是这种情况,那么readBytes在第一个(也是唯一的)循环迭代中将为零,因为你在流的末尾 - 没有什么可读的。

在开始阅读之前尝试设置stream.Position = 0