如何使用 FtpWebRequest 接收字节?

How receive bytes using FtpWebRequest?

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

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

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

StreamReader documentation:

Implements a TextReader that reads characters from a byte stream in a particular encoding.

如果您想逐字节访问流,那么用 StreamReader 读取 Stream 是没有意义的。也就是说,Stream 可以使用其 Read method.

自行执行的操作