C# FTP下载将CrLf转换为Lf
我使用此代码从FTP服务器下载文本文件(目录包含FTP服务器的文件/目录列表):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
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
}
}