簡體   English   中英

WinSCP .NET程序集-非遞歸GetFiles根目錄(無子目錄)

[英]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);

這等效於您的代碼。


您的代碼中還有其他問題。

  1. 您要求WinSCP下載根目錄,但要排除所有目錄。 所以什么也沒有下載。 您需要要求下載根目錄/*中的所有文件。

    引用文檔獲取GetFilesremotePath參數

    遠程目錄的完整路徑, 后跟斜杠和通配符以選擇要下載的文件或子目錄。 要下載目錄中的所有文件,請使用mask *

  2. 我假設C:\\bla是目標目錄。 因此,您必須告訴WinSCP通過添加反斜杠C:\\bla\\將文件下載到目錄中。 否則,WinSCP將嘗試將所有文​​件保存到名稱為bla C:\\ 失敗,如果已經有一個具有該名稱的目錄。 或者,如果沒有,則將文件彼此覆蓋。

    GetFileslocalPath參數的文檔:

    下載文件的完整路徑。 下載多個文件時,路徑中的文件名應替換為操作掩碼或省略( 路徑以反斜杠結尾 )。

  3. 您應該通過檢查返回的TransferOperationResult或直接調用.Check()來檢查錯誤。

因此正確的代碼是:

TransferOptions t = new TransferOptions { FileMask = "|*/" };

session.GetFiles("/*", @"C:\bla\", false, t).Check();

暫無
暫無

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

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