public static FTPFile[] GetFileInfosRecursive(this FTPConnection connection)
    {
        var resultList = new List <FTPFile>();
        var fileInfos  = connection.GetFileInfos();

        resultList.AddRange(fileInfos);
        foreach (var fileInfo in fileInfos)
        {
            if (fileInfo.Dir)
            {
                connection.ServerDirectory = fileInfo.Path;
                resultList.AddRange(connection.GetFileInfosRecursive());
            }
        }
        return(resultList.ToArray());
    }
 static void Main(string[] args)
 {
     using (var connection = new FTPConnection
     {
         ServerAddress = "127.0.0.1",
         UserName = "******",
         Password = "******",
     })
     {
         connection.Connect();
         connection.ServerDirectory = "/recursive_folder";
         var resultRecursive =
             connection.GetFileInfosRecursive().Where(f => !(f.Name.EndsWith(".old"))).ToList();
         var resultDefault = connection.GetFileInfos().Where(f => !(f.Name.EndsWith(".old"))).ToList();
     }
 }