我們目前有* .BAT文件,其中包含一些FTP命令,用於從AS400下載文件並保存爲TEXT文件。 BAT工作正常,文本文件將顯示下載文件中的記錄。C#從FTP下載文件AS400
現在,我們想擺脫這個* .BAT文件,並使用C#爲我們下載文件並保存到文本文件中。現在的問題是我們得到的文件包含一行字符串中的所有記錄!他們不再列在對方之下。
這裏的代碼中,我們使用的是:
tpWebRequest request = default(FtpWebRequest);
FtpWebResponse response = default(FtpWebResponse);
StreamWriter writer = default(StreamWriter);
request = WebRequest.Create("*******URL******") as FtpWebRequest;
request.Credentials = new NetworkCredential("user", "pass");
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UseBinary = true;
response = request.GetResponse() as FtpWebResponse;
writer = new StreamWriter(Server.MapPath("/filename.txt"));
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(37))) //37 for IBM encoding
{
writer.WriteLine(reader.ReadToEnd());
}
writer.Close();
response.Close();
任何想法,爲什麼我們得到這個?爲什麼簡單的DOS FTP命令比我們的代碼更好?
非常感謝! :)
我想你應該使用調試器啓動並檢查()''通過返回reader.ReadToEnd的價值。該函數保留新的行字符(可能只是原始文件中的LF或CR),而當以ASCII模式傳輸時,「ftp」將它們轉換爲CRLF。 – wOxxOm
使用十六進制編輯器查看實際輸出。它可能有CR,但沒有LF或類似的。你可能需要做一些字符串替換來介紹它們。 IBM編碼將修正小/大端的不匹配,但我不確定CR/LF對。 –
確保它在文件中寫入換行符。如果不是,請嘗試手動添加換行符。另外,記事本有時不顯示換行符。嘗試寫字板或其他編輯器。 –