StreamReader ReadToEnd () дает разные результаты для текстовых файлов на разных серверах - PullRequest
0 голосов
/ 07 августа 2011

Я создал небольшую FTP-программу, она предназначена только для моего собственного использования, поэтому данные для входа в систему + пути к файлам жестко заданы.

У меня есть кнопка, которая запускает процесс загрузки двух текстовых файлов -их содержимое помещается в два разных текстовых поля.

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 ]

2 голосов
/ 07 августа 2011

1001 * попробовать *

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 голос
/ 07 августа 2011

Я предполагаю, что первый сервер - Windows, а второй - Linux.Новая строка в Windows: \ r \ n Новая строка в Linux: \ n неправильно отображается в windows

0 голосов
/ 07 августа 2011

1001 * попробовать *

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();
...