C# 从 FTP AS400 下载文件

C# Download File from FTP AS400

我们目前有一个 *.BAT 文件,其中包含一些 FTP 命令,用于从我们的 AS400 下载文件并保存到文本文件中。 BAT 工作正常,文本文件将在另一个下显示下载文件中的记录。

现在,我们想摆脱这个 *.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 命令比我们的代码工作得更好?

非常感谢! :)

问题可能很简单:您一次阅读了整个文档。您需要单独阅读每一行:

using(StreamReader sr = new StreamReader(fs))
{
     while(!sr.EndOfStream)
     {
         Console.WriteLine(sr.ReadLine());
     }
}

ASCII模式会在下载物理文件时添加记录分隔符。这是大多数 ftp 客户端的默认传输模式。

request.UseBinary = false;

Specifying false causes the FtpWebRequest to send a "Type A" command to the server.

Data Transfer Methods

Transferring QSYS.LIB files