在 C# FluentFTP 中将 FTP 文件内容读取为字符串

Read FTP file contents to a string in C# FluentFTP

我的 class 继承自 FluentFTP,我创建了一个这样的 class。我需要在这个 class 中创建一个名为 Read 的函数。 read函数的作用是把我从FTP中读取出来的文件内容逐行读取出来,return一个字符串给我。我稍后会处理旋转的字符串。 FluentFTP 中有这种方法吗?如果有 none,我应该如何创建函数?

using FluentFTP;

public class CustomFtpClient : FtpClient
{
    public CustomFtpClient(
            string host, int port, string username, string password) :
        base(host, port, username, password)
    {
        Client = new FtpClient(host, port, username, password);
        Client.AutoConnect();
    }

    private FtpClient Client { get; }

    public string ReadFile(string remoteFileName)
    {
        Client.BufferSize = 4 * 1024;
        return Client.ReadAllText(remoteFileName);
    }
}

我不能这样写,因为我写的 Client 来自 FTP。由于我之前的代码是从SFTP推导出来的,所以想用类似的代码片段,但是FluentFTP中没有这样的代码片段。在Read函数中应该如何进行操作?

在另一个文件中,我想这样调用它。

CustomFtpClient = new CustomFtpClient(ftpurl, 21, ftpusername, ftppwd);
var listedfiles = CustomFtpClient.GetListing("inbound");
var onlyedifiles = listedfiles.Where(z =>
    z.FullName.ToLower().Contains(".txt") || z.FullName.ToLower().Contains("940"))
    .ToList();

foreach (var item in onlyedifiles)
{
    //var filestr = CustomFtpClient.ReadFile(item.FullName);
}

要使用 FluentFTP 将文件读取为字符串,您可以使用 FtpClient.Download method 将文件内容写入 Streambyte[] 数组。以下示例使用后者。

if (!client.Download(out byte[] bytes, "/remote/path/file.txt"))
{
    throw new Exception("Cannot read file");
}

string contents = Encoding.UTF8.GetString(bytes);