StreamReader ReadToEnd()为不同服务器上的txt文件提供不同的结果

时间:2011-08-06 21:54:56

标签: c# text-files streamreader ftpwebrequest ftpwebresponse

我创建了一个小型FTP程序,它仅供我自己使用,因此登录详细信息+文件路径是硬编码的。

我有一个按钮,它开始下载两个txt文件的过程 - 这些文件的内容被放入两个不同的文本框中。

txt文件使用UTF-8编码,如下所示:

line1
line2
line3
etc.

我已将这两个文件放在两个不同的服务器上(每个服务器上有两个文件)。在服务器1上,两个文件都被正确下载并显示在文本框中,如下所示:

line1
line2
line3
etc.

在服务器2上,下载这两个文件并显示在文本框中,如下所示:

line1line2line3etc.

我真的不明白为什么 - 我有编辑软件(下载过程)和文件,我当然只编辑了硬编码文件路径,因为服务器

这是我下载其中一个文件的方式(另一个文件的方式相同,只是名称不同):

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(folder + artistsFileNameTxt);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(login, pass);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);

tbxArtists.Text = reader.ReadToEnd();

reader.Close();
response.Close();

任何帮助?

3 个答案:

答案 0 :(得分:2)

request.UseBinary = false;

默认值为true ...仅当您确定要处理文本文件时才执行此操作。

FTP协议有“内置”来处理有关NewLine的系统差异...

顺便说一句,你必须在通过FTP上传时正确设置此设置,否则它会变得混乱......

http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.usebinary.aspx
http://www.rhinosoft.com/newsletter/NewsL2008-03-18.asp

答案 1 :(得分:1)

我的猜测是第一台服务器是windows,而第二台服务器是linux。 Windows新行:\ r \ n Linux新行:\ n     在Windows

中无法正确显示

答案 2 :(得分:0)

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(folder + artistsFileNameTxt);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(login, pass);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);

tbxArtists.Text = reader.ReadToEnd();

reader.Close();
response.Close();