簡體   English   中英

WinSCP .NET程序集:如何下載目錄

[英]WinSCP .NET assembly: How to download directories

我用C#編寫了一個使用System.IO.GetDirectoires()System.IO.GetFiles()的應用程序

我現在必須將其轉換為使用SFTP。 我有WinSCP .NET程序集的PutFilesGetFiles的經驗,但是我不知道如何獲取目錄列表。 我可以在文件中使用winscp.exe中的GetFiles ,但據我所知,沒有辦法獲取目錄。 有沒有人有辦法做到這一點,還是有一個更容易使用的庫?

// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Sftp,
    HostName = "example.com",
    UserName = "user",
    Password = "mypassword",
    SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
};

using (Session session = new Session())
{
    // Connect
    session.Open(sessionOptions);
}

WinSCP .NET程序集的Session.GetFiles 下載文件和子文件夾


實際上,當您不想下載它們時,必須明確指定。

請參閱如何以非遞歸方式傳輸(或同步)目錄?


如果要列出遠程目錄中的子文件夾,請使用帶有EnumerationOptions.MatchDirectoriesSession.EnumerateRemoteFiles並將結果集過濾到帶有RemoteFileInfo.IsDirectory的條目中:

IEnumerable<RemoteFileInfo> directories =
    session.EnumerateRemoteFiles(path, null, EnumerationOptions.MatchDirectories).
        Where(file => file.IsDirectory);

但是同樣,您無需執行此操作即可下載目錄, Session.GetFiles會為您完成此操作。

試試這樣的東西

  // Connect
  session.Open(sessionOptions);

  RemoteDirectoryInfo directory = 

  session.ListDirectory("/");

  foreach (RemoteFileInfo fileInfo in directory.Files)
  {
         Console.WriteLine("{0} with size {1}, permissions {2} and last modification at {3}", fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions, fileInfo.LastWriteTime);
  }

也試試

string dumpCommand = "ls";
session.ExecuteCommand(dumpCommand)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM