【问题标题】:Why does FileStream feed FtpWebRequest but not MemoryStream?为什么 FileStream 提供 FtpWebRequest 而不是 MemoryStream?
【发布时间】:2010-09-24 19:40:14
【问题描述】:

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

【问题讨论】:

  • 读入内存流和文件流时Position有区别吗?

标签: c# ftpwebrequest


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-09-07
    • 2021-10-29
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多