TreeView1是.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