0

我创建了一个小型 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();

有什么帮助吗?

4

3 回答 3

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

于 2011-08-06T23:01:34.027 回答
1

我的猜测是第一台服务器是windows,而第二台是linux。Windows 换行:\r\n Linux 换行:\n 在 windows 中显示不正确

于 2011-08-06T22:39:25.790 回答
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();
于 2011-08-06T23:13:16.980 回答