62,047
社区成员
发帖
与我相关
我的任务
分享
Public Class Form1
Dim ftp As ftpClient '这是为了方便操作自已写的一个类,用ftpWebRequest来FTP的。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'同样是自已写的一个类,用来保存FTP帐号信息
Dim Dec As New ftpClient.FtpDetails("125.***.***.***", 21, "username", "ftpPassword")
ftp = New ftpClient(Dec) '创建对象实例。你可以用你自已的FTP方法来实现。
loadTree(TreeView1.Nodes, "")
End Sub
Private Sub loadTree(ByVal Nodes As TreeNodeCollection, ByVal Path As String)
'获得各级分类
Dim sNode As Integer = -1
'通过FTP获得当前目录列表
Dim result As String = ftp.GetFileList(Path)
Dim files() As String = Split(result, vbCrLf) '把FTP服务器返回的文本,分离出是目录还是文件,文件或目录名,文件大小
Dim ffi As New ftpClient.FtpListFileInfo
If files.Length > 0 Then
'加载节点
Dim I As Integer
For I = 0 To files.Length - 2
Dim mylbName As String = files(I).ToString
ffi.ParserString(files(I)) '对返回的单行做分割。分离出是目录还是文件,文件或目录名,文件大小
If ffi.IsDirectory = True And ffi.FileName <> ".." And ffi.FileName <> "." Then '如果是有效的目录。
sNode += 1
Nodes.Add(0, ffi.FileName) '由于是目录,前面的参数保存了类似.Tag一样的作用,这里保存了文件的size
Dim newpath As String = Path + "/" + ffi.FileName 'FileName如果是文件表示文件名,否则表示目录名
Application.DoEvents()
'读取当前节点的子节点加载()
loadTree(Nodes(sNode).Nodes, newpath) '递归检查当前目录下是否有子目录
ElseIf ffi.IsDirectory = False Then '如果是文件
sNode += 1
Nodes.Add(ffi.FileSize.ToString, ffi.FileName) '加入到节点中
End If
Next
End If
TreeView1.ExpandAll()
End Sub
Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
Label1.Text = "当前选中节点的完整路径是:" + e.Node.FullPath.ToString + " 文件大小:" + e.Node.Name.ToString
End Sub
End Class
string[] strDirs = Directory.GetDirectories("c:\....");
//然后循环.