[英]WinSCP .NET assembly - GetFiles root directory non-recursive (without subdirs)
我正在嘗試從目錄下載文件,而在通緝目錄中沒有其他目錄。
我已經在Internet上搜索了答案,我發現的唯一發現是在TransferOptions
使用FileMask
"|*/"
,它不起作用,並且不下載任何內容。
使用最新版本(5.7.5)
TransferOptions t = new TransferOptions { FileMask = "|*/" };
session.GetFiles("/", @"C:\bla", false, t);
您排除子目錄的代碼是正確的。
另請參見WinSCP常見問題解答如何非遞歸傳輸目錄?
TransferOptions transferOptions = new TransferOptions();
transferOptions.FileMask = "|*/";
session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);
這等效於您的代碼。
您的代碼中還有其他問題。
您要求WinSCP下載根目錄,但要排除所有目錄。 所以什么也沒有下載。 您需要要求下載根目錄/*
中的所有文件。
引用文檔獲取GetFiles
的remotePath
參數 :
遠程目錄的完整路徑, 后跟斜杠和通配符以選擇要下載的文件或子目錄。 要下載目錄中的所有文件,請使用mask
*
。
我假設C:\\bla
是目標目錄。 因此,您必須告訴WinSCP通過添加反斜杠C:\\bla\\
將文件下載到目錄中。 否則,WinSCP將嘗試將所有文件保存到名稱為bla
C:\\
。 失敗,如果已經有一個具有該名稱的目錄。 或者,如果沒有,則將文件彼此覆蓋。
下載文件的完整路徑。 下載多個文件時,路徑中的文件名應替換為操作掩碼或省略( 路徑以反斜杠結尾 )。
您應該通過檢查返回的TransferOperationResult
或直接調用.Check()
來檢查錯誤。
因此正確的代碼是:
TransferOptions t = new TransferOptions { FileMask = "|*/" };
session.GetFiles("/*", @"C:\bla\", false, t).Check();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.