2015-02-11 102 views
0

我使用SSH.NET庫連接到sftp服務器並管理從服務器下載文件。在服務器中有很多文件類型,我只需要CSV文件下載。如何檢查文件擴展名GetExtension在SSH.NET中不起作用。幫助非常感謝。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); 
        } 

       } 
      } 

回答

0

我發現了一個解決方案,我在這裏發佈它來幫助像我這樣的同樣問題的任何人。

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

if (ext == ".csv") 
{ 
    //code goes here 
} 
1

我有一個過程,下載許多以「.rpt」結尾的文件。在我的情況下,我關心最新的文件,但是這個代碼很好地工作。 ConnectionInfo c = new PasswordConnectionInfo(host,port,userName,password);

 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(); 
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;

希望這有助於! :)