【问题标题】:How receive bytes using FtpWebRequest?如何使用 FtpWebRequest 接收字节?
【发布时间】:2015-05-05 21:24:37
【问题描述】:

我正在编写我的第一个主要项目;一个 FTP 客户端。我已经设法让它连接起来,并请求列出所有文件等(正在正确格式化 dirs xD),但这让我想知道,当我请求文件时,我读到了对 Stream 的响应。现在我知道很多人使用StreamReader,但这是用于文本而不是二进制文件?那么 FTP 服务器如何准确地发送数据呢?我可以假设如果我直接从 Stream 中读取所有内容都可以放入 byte[] 吗?

【问题讨论】:

    标签: c# .net ftp stream ftpwebrequest


    【解决方案1】:

    确实,如果您使用StreamReader,它会尝试将Stream 中的字节解释为文本。这意味着,它将尝试根据特定的编码(默认为 UTF-8)来解释它。如果实际数据是二进制的,那有什么不好的。

    StreamReader documentation

    实现一个 TextReader,以特定编码从字节流中读取字符。

    如果您想按字节访问流,则使用StreamReader 读取Stream 是没有意义的。也就是说,Stream 可以使用其 Read method 自行完成。

    【讨论】:

      【解决方案2】:

      计算机中的所有数据都是字节。 StreamReader 可用于任何格式的文件,包括文本和二进制文件。在底层,ftp 服务器使用套接字以字节发送数据。在我看来,将所有数据放在 byte[] 中是安全的,您可以通过各种方式对其进行解释。

      【讨论】:

      • 这不是真的。引用 StreamRead 文档:实现一个 TextReader,它以特定编码从字节流中读取字符。它不应该用于二进制数据。
      猜你喜欢
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      相关资源
      最近更新 更多