C#从FTP AS400下载文件

本文关键字:下载 文件 AS400 FTP | 更新日期: 2023-09-27 18:22:10

我们目前有一个*.BAT文件,其中包含一些FTP命令,用于从AS400下载文件并保存到TEXT文件中。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命令比我们的代码工作得更好?

非常感谢!:)

C#从FTP AS400下载文件

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

request.UseBinary = false;

指定false会导致FtpWebRequest向服务器发送"Type a"命令。

数据传输方法

传输QSYS.LIB文件

问题可能很简单:您可以一次读取整个文档。你需要分别阅读每一行:

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