[英]How to remove “.” and “..” files from remote directory with C# and WinSCP
[英]How could I add nodes of a treeview as folders from a remote directory with WinSCP and C#
我正在尝试创建一个树视图来使用 FTP/SFTP 连接在远程服务器中搜索目录,我想要做的是开始用从主目录开始的所有可用目录填充树视图,例如下面的例子:
Home---->SubFolder
|
|---->Another Folder
|
|---->MyOtherFolder
然后,当用户开始单击每个文件夹时,它开始从树视图中显示其子目录作为以下示例(单击另一个文件夹):
Home ---->SubFolder
|
|---->Another Folder -------> MyFolder1
| | -------> MyFolder2
|
|---->MyOtherFolder
我正在尝试获取这些文件夹,但它抛出了一个异常,它也在收集文件,而不是文件夹....
这是我拥有的代码....
private void FillTree()
{
SessionOptions SessionOptions = new SessionOptions();
Session MySession = new Session();
SessionOptions.HostName = InterfaceValues[0];
SessionOptions.UserName = InterfaceValues[2];
SessionOptions.Password = InterfaceValues[3];
SessionOptions.PortNumber = Convert.ToInt32(InterfaceValues[1]);
if (string.Compare(InterfaceValues[9], "FTP", true) == 0)
SessionOptions.Protocol = WinSCP.Protocol.Ftp;
else if (string.Compare(InterfaceValues[9], "SFTP", true) == 0)
{
SessionOptions.Protocol = WinSCP.Protocol.Sftp;
SessionOptions.SshPrivateKeyPath = InterfaceValues[12];
SessionOptions.SshHostKeyFingerprint = InterfaceValues[10];
}
try
{
MySession.Open(SessionOptions);
foreach (RemoteFileInfo info in MySession.EnumerateRemoteFiles("/", "*", EnumerationOptions.AllDirectories))
{
if (info.IsDirectory)
tvRemoteDirectory.Nodes.Add(info.Name);
}
MySession.Close();
}
catch (Exception ex)
{
MySession.Close();
MessageBox.Show("Not possible to connect to " + InterfaceValues[0] + "\nError Message: " + ex.Message);
this.Close();
}
我得到的例外是:
{WinSCP.SessionRemoteException: Error listing directory '/jpm_icl'. ---> WinSCP.SessionRemoteException: Permission denied. Error code: 3 Error message from server: Permission Denied!
知道此时我能做什么吗?
我所做的是:
ListDirectory函数检索所有目录,因为我不希望目录“。” 和“。” 我必须排除它。
RemoteDirectoryInfo RemoteDirectory;
if (RemoteDirectoryPath != "Home")
RemoteDirectory = MySession.ListDirectory(RemoteDirectoryPath);
else
RemoteDirectory = MySession.ListDirectory("/");
if (tvRemoteDirectory.SelectedNode.Nodes.Count > 0) tvRemoteDirectory.SelectedNode.Nodes.Clear();
foreach (RemoteFileInfo fileinfo in RemoteDirectory.Files)
{
if (fileinfo.IsDirectory)
{
if (fileinfo.Name != "." &&
fileinfo.Name != "..")
{
TreeNode ChildNode = new TreeNode();
ChildNode.Text = fileinfo.Name;
ChildNode.ImageIndex = 0;
tvRemoteDirectory.SelectedNode.Nodes.Add(ChildNode);
tvRemoteDirectory.ExpandAll();
}
}
}
使用RadFileExplorer-Telerik ASP.NET FileExplorer
并且此功能将满足您的要求FileExplorer-在TreeView中显示所有项目
其他所有关键功能均在下方列出,您需要
您可以从Telerik获得适用于任何平台的此功能。
集成在Telerik.Web.UI中的单个控件-准备在页面上拖放
使用ASP.NET 2.0 AJAX回调机制按需加载目录负载
用于文件操作的客户端和服务器事件
使用RadEditor的FileBrowserContentProvider抽象来挂钩到任何基础文件系统,例如OS,数据库,MOSS SharePoint,MCMS
文件和文件夹的排序
上下文菜单
能够删除和重命名文件和文件夹
能够创建新文件夹
如果文件夹包含大量项目(例如,超过200个),则能够启用网格的分页
使用新的工具栏按钮可以在网格视图和缩略图视图之间快速切换
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.