C# FTP下载将CrLf转换为Lf

C# FTP下载将CrLf转换为Lf,c#,ftp,C#,Ftp,我使用此代码从FTP服务器下载文本文件(目录包含FTP服务器的文件/目录列表): for(int i=0;i您拥有fileFtpRequest.UseBinary=true;并且您正在下载端使用二进制文件流 所以不是FTP客户机转换任何东西,你想要的转换显然是FilZilla做的,但是你没有得到 您可以尝试使用UseBinary=false,但文档对其效果并不明确 StreamReader接受“\n”,因此您可以将while(true)部件替换为 using (Stream fileRespon

我使用此代码从FTP服务器下载文本文件(目录包含FTP服务器的文件/目录列表):


for(int i=0;i您拥有
fileFtpRequest.UseBinary=true;
并且您正在下载端使用二进制文件流

所以不是FTP客户机转换任何东西,你想要的转换显然是FilZilla做的,但是你没有得到

您可以尝试使用
UseBinary=false
,但文档对其效果并不明确

StreamReader接受“\n”,因此您可以将
while(true)
部件替换为

using (Stream fileResponse = fileFtpRequest.GetResponse().GetResponseStream())
using (var reader = new StreamReader(fileResponse))
{
   string line;
   while ((line = reader.ReadLine()) != null)
   {
       something.WriteLine(line);  // here you get the .NET line ending
   }
}
FTP的“二进制”传输模式精确地逐字节复制文件。简单明了

但是,当在不同的操作系统之间传送文本文件时,这可能不是您想要的--不同的操作系统使用不同的代码来表示换行符。“ASCII”模式就是为了这个目的而存在的:它会自动将所有行尾从源系统的格式转换为目标系统的格式。

UseBinary=false;
做到了。我问过的每个人都告诉我必须将其设置为true,并且我必须找其他地方--谢谢你的快速回答!
using (Stream fileResponse = fileFtpRequest.GetResponse().GetResponseStream())
using (var reader = new StreamReader(fileResponse))
{
   string line;
   while ((line = reader.ReadLine()) != null)
   {
       something.WriteLine(line);  // here you get the .NET line ending
   }
}