![](/img/trans.png)
[英]WinSCP .NET assembly - Remove files (not directories) after GetFiles
[英]WinSCP .NET assembly: How to download directories
我用C#編寫了一個使用System.IO.GetDirectoires()
和System.IO.GetFiles()
的應用程序
我現在必須將其轉換為使用SFTP。 我有WinSCP .NET程序集的PutFiles
和GetFiles
的經驗,但是我不知道如何獲取目錄列表。 我可以在文件中使用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.MatchDirectories
的Session.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.