这是我想首先用外行术语做的事情:我想获取文件(也许只是一些文件)。如果有子目录,我也想在这些子目录中获取文件。我正在使用 Visual C++/CLI 进行编程,所以我使用的是 .net 程序集。
在 WinSCP 中,即使用Session.SynchronizeDirectories()
. 最后一个参数是TransferOptions
(一个类),它通常设置为空。基本上这意味着每个文件都将被传输。如果我创建一个对象并设置属性string FileMask
,我应该只能传输某些文件。
所以我将WinSCP C#示例程序更改为:
using (Session session = new Session())
{
// Will continuously report progress of synchronization
session.FileTransferred += FileTransferred;
// Connect
session.Open(sessionOptions);
// Create a TransferOptions object
TransferOptions tro = new TransferOptions();
tro.FileMask = "*.txt";
tro.TransferMode = TransferMode.Automatic;
// Synchronize files
SynchronizationResult synchronizationResult;
synchronizationResult =
session.SynchronizeDirectories(
SynchronizationMode.Local, @"C:\temp\win", "/C/Users/peter/Documents/WinSCP5.5.1/",
false, false, SynchronizationCriteria.Time, tro);
// Throw on any error
synchronizationResult.Check();
}
当我运行程序时,当前目录和子目录中的所有内容都会被转移!
认为我在指定这些选项时可能是错误的。我使用 WinSCP 程序。(可参考 WinSCP 网站传输设置对话框页面中的图片。)
除了我为文件掩码输入以下内容外,所有选项都很清楚:
*.txt
我单击确定按钮开始传输。我有预览选项。而且我只看到选择的 txt 文件,甚至是子目录中的一个。
所以 WinSCP 程序有效,但 API 无效?
[编辑] 我正在使用 5.5.2 版的 WinSCP 程序集。