2

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

1 回答 1

3

readBytes通过循环的第一次迭代的价值是什么?

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

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

于 2010-09-24T19:45:14.060 回答