0

我使用 SSH.NET 库连接到 sftp 服务器并设法从服务器下载文件。在服务器中有很多文件类型,我只需要 CSV 文件即可下载。如何检查文件扩展名 GetExtension 在 SSH.NET 中不起作用。非常感谢帮助。

            foreach (var file in files)
            {
                if (!file.Name.StartsWith("."))
                {
                    string remoteFileName = file.Name;

                    using (Stream fileStream = System.IO.File.OpenWrite(Path.Combine(sFilePath, file.Name)))
                    {
                        sftp.DownloadFile(file.FullName, fileStream);
                    }

                }
            }
4

3 回答 3

2

我有一个下载大量以“.rpt”结尾的文件的过程。就我而言,我关心最新的文件,但无论哪种方式,这段代码都能正常工作。ConnectionInfo c = new PasswordConnectionInfo(主机、端口、用户名、密码);

        var sftp = new SftpClient(c);

        List<SftpFile> allFiles = sftp.ListDirectory(directory).ToList().OrderByDescending(f => f.LastWriteTime).ToList();
        var fileNames = allFiles.Where(f => f.Name.EndsWith("csv")).Select(f => f.Name).ToList();
于 2015-09-22T06:21:47.413 回答
1

我找到了一个解决方案,我将其发布在这里,以帮助像我一样有同样问题的人。

 string fname = file.Name;
 string ext = fname.Substring(fname.Length - 4, 4);

 if (ext == ".csv")
 {
     //code goes here
 }
于 2015-06-24T05:19:41.440 回答
0

怎么样...之类的

ConnectionInfo c = new PasswordConnectionInfo(host,port,username,password);
var sftp = new SftpClient(c);
string remote= "/FromServer/"

sftp.Connection();
Console.WriteLine("Connected to {0}", host); // Just to help keep track of things
sftp.ChangeDirectory(remote); 

Console.WriteLine("Changed directory to {0}", remote);// You should see your repository with this

  var allFilenames = Directory.EnumerateFiles(remote).Select(p => Path.GetFileName(p));
        var withext = allFilenames
                           .Where(fn => Path
                               .GetExtension(fn) == ".csv")
                                     .Select(fn => Path.GetFileName(fn));

记得把这些人也加进去…… using Renci.SshNet; using Renci.SshNet.Sftp;

希望这可以帮助!!:)

于 2016-05-11T13:59:18.413 回答