Welcome 微信登录
编程资源 图片资源库

首页 / 软件开发 / .NET编程技术 / 使用递归+.Net FtpWebRequest获得远程服务器的目录结构树

使用递归+.Net FtpWebRequest获得远程服务器的目录结构树2011-05-13 博客园 纳奇.TechTreeView1是.Net TreeView控件。请在WinForm界面上添加一个控件

Form1_load中的Dec是实例化ftpClient.vb的一个对象,ftpDetails是用来存储FTP登录凭据的。

Form1.vb

1Public Class Form1Class Form1
2
3 Dim ftp As ftpClient
4 Dim LocalFileList As New DataTable
5
6 Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
7 Dim Dec As New ftpClient.FtpDetails("www.cnblogs.com", 21, "cnblogVIP", "**********")
8 ftp = New ftpClient(Dec)
9 loadFtpTree(TreeView1.Nodes, "") "调用此代码可以装载远程FTP结构树
10
11 End Sub
12
13 "这个方法用于获得远程目录及文件树
14 Private Sub loadFtpTree()Sub loadFtpTree(ByVal Nodes As TreeNodeCollection, ByVal Path As String)
15 ""获得各级分类
16 Dim sNode As Integer = -1
17 ""通过FTP获得当前目录列表
18 Dim result As String = ftp.GetFileList(Path)
19 Dim files() As String = Split(result, vbCrLf) "把FTP服务器返回的文本,分离出是目录还是文件,文件或目录名,文件大小
20 Dim ffi As New ftpClient.FtpListFileInfo
21 If files.Length > 0 Then
22 "加载节点
23 Dim I As Integer
24 For I = 0 To files.Length - 2
25 ffi.ParserString(files(I)) "对返回的单行做分割。分离出是目录还是文件,文件或目录名,文件大小
26 If ffi.IsDirectory = True And ffi.FileName <> ".." And ffi.FileName <> "." Then "如果是有效的目录。
27 sNode += 1
28 Nodes.Add(0, ffi.FileName) "由于是目录,前面的参数保存了类似.Tag一样的作用,这里保存了文件的size
29 Dim newpath As String = Path + "/" + ffi.FileName "FileName如果是文件表示文件名,否则表示目录名
30 Application.DoEvents()
31 "读取当前节点的子节点加载()
32 loadFtpTree(Nodes(sNode).Nodes, newpath) "递归检查当前目录下是否有子目录
33 ElseIf ffi.IsDirectory = False Then "如果是文件
34 sNode += 1
35 Nodes.Add(ffi.FileSize.ToString, ffi.FileName) "加入到节点中
36 End If
37 Next
38 End If
39 TreeView1.ExpandAll()
40 End Sub