用VB将目录里所有文件及子目录存储到一个类型数组中后,将基其反映在Treeview控件上
来源:互联网 发布:淘宝用户行为隐私保护 编辑:程序博客网 时间:2024/06/05 12:39
经过3天的苦苦思考,于今日终于完成了将一个目录里所有文件及子目录存储到一个类型数组中后,然后将这个数组信息存储到一个TreeView控件中。下面将我3天来的成绩写给大家,以供交流参考。
1、在Form上添加一个TreeView控件,命名为T;一个ImageList控件,命名为Img1,选择Img1控件,右键单击->属性->图像->插入两个图片(索引为1、2用于显示目录或文件);添加一个CommandButton按钮,Caption属性为:“遍历文件夹”,命名为BtnShowTree,代码如下:
Private Type Folder
FolderName As String '文件夹的名字
FolderLogo As String '文件夹的标志
End Type
Private Type FolderOrFile
FName As String '名字
FFather As String '父结点
FType As Integer '用于判断是文件夹还是文件1代表文件夹,0代表文件
Flogo As String '自身标志
End Type
Dim FolderFile() As FolderOrFile '定义文件夹及文件存储信息数组
Dim Folder() As Folder '定义文件夹信息
Dim N As Integer '用于目录及文件的个数
Dim nodX As Node '树形控件中
Dim FolderN As Integer '文件夹个数
Dim FolderN_C As Integer '附文件夹个数
___________________________________________
Private Sub Form_Load()
T.LineStyle = tvwTreeLines
T.ImageList = Img1
T.Style = tvwTreelinesPlusMinusPictureText
Set nodX = T.Nodes.Add(, , "文件管理系统", "文件管理系统", 1) '添加一个根,注意这个文件夹的根须命名为“文件管理系统”如果要命为其他名称需改其中部分代码
End Sub
__________________________________________________________________
Public Sub SearchFolder(ByVal strpath As String) '该函数主要功能是先给“文件管理系统”目录下所有子目录定一个Key,因为TreeView中所有的结点都不能重名,strpath为路径名
On Error Resume Next
Dim Fso As Object
Dim Fol As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fol = Fso.GetFolder(strpath)
For Each Fol In Fol.subfolders
FolderN = FolderN + 1
ReDim Preserve Folder(FolderN)
Folder(FolderN).FolderName = SJW(Fol.path, SMID(Fol.path))
Folder(FolderN).FolderLogo = "Folder" & Trim(Str(FolderN))
SearchFolder Fol
Next
Set Fso = Nothing
Set Fol = Nothing
End Sub
__________________________________________________________________________
Public Sub SeachFileorFolder(ByVal strpath As String, Flogo As String) 'strpath为路径,Flogo为父结点标志
On Error Resume Next
Dim Fso As Object
Dim Fol As Object
Dim Fil As Object
Dim FolN As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fol = Fso.GetFolder(strpath)
Set Fil = Fol.Files
Set FolN = Fso.GetFolder(strpath)
Dim FFF As String
Dim FFtype As Integer
'扫描文件
'一些相关操作
If SJW(strpath, SMID(strpath)) = "文件管理系统" Then
For Each Fil In Fol.Files
N = N + 1
ReDim Preserve FolderFile(N)
FolderFile(N).FName = SJW(Fil.path, SMID(Fil.path))
FolderFile(N).FFather = "文件管理系统"
FolderFile(N).FType = 0
FolderFile(N).Flogo = "根" & Trim(Str(N))
Next
Else
For Each Fil In Fol.Files
N = N + 1
ReDim Preserve FolderFile(N)
FolderFile(N).FName = SJW(Fil.path, SMID(Fil.path))
FolderFile(N).FFather = Flogo
FolderFile(N).FType = 0
FolderFile(N).Flogo = Flogo & Trim(Str(N))
Next
End If
'扫描子目錄
FolderN_C = FolderN_C + 1
For Each FolN In FolN.subfolders
N = N + 1
ReDim Preserve FolderFile(N)
FolderFile(N).FName = SJW(FolN.path, SMID(FolN.path))
If SJW(strpath, SMID(strpath)) = "文件管理系统" Then
FolderFile(N).FFather = "文件管理系统"
Else
FolderFile(N).FFather = Flogo
End If
FolderFile(N).FType = 1
FolderFile(N).Flogo = Trim(Folder(FolderN_C).FolderLogo)
SeachFileorFolder FolN, Folder(FolderN_C).FolderLogo
Next
Set Fso = Nothing
Set Fil = Nothing
Set Fol = Nothing
Set FolN = Nothing
End Sub
_____________________________________________________________
Private Sub ThowT(s As Integer) '将数组中的信息添加到树形控件中
On Error Resume Next
Dim FFtype As Integer '文件和文件夹使用图标的判断
Dim i As Integer
For i = 1 To N
If FolderFile(i).FType = 1 Then
FFtype = 1
ElseIf FolderFile(i).FType = 0 Then
FFtype = 2
End If
Set nodX = T.Nodes.Add(FolderFile(i).FFather, tvwChild, FolderFile(i).Flogo, FolderFile(i).FName, FFtype)
Next
End Sub
____________________________________________________________________________
Private Function SLeft(s As String, L As Integer) As String '取字符串
Dim i As Integer
For i = 1 To L
SLeft = SLeft & Mid(s, i, 1)
Next
End Function
Private Function SMID(s As String) As Integer '取/的位置
If s = "" Then
SMID = 0
End If
Dim i As Integer
For i = lstrlen(s) To 1 Step -1
If Mid(s, i, 1) = "/" Then
SMID = i
Exit For
End If
Next
If i = 0 Then
SMID = 0
End If
End Function
Private Function SJW(s As String, T As Integer) As String '取/后的字符串
If s = "" Or T = 0 Then
SJW = ""
Exit Function
End If
Dim i As Integer
SJW = Mid(s, T + 1, lstrlen(s) - T)
End Function
___________________________________________________________
Private Sub BtnShowTree_Click()
FolderN_C = 0
FolderN = 0
N = 0
List1.Clear
List3.Clear
SearchFolder App.path & "/文件管理系统"
SeachFileorFolder App.path & "/文件管理系统", ""
ThowT N
End Sub
以上代码在VB6.0环境下调试通过
执行结果为:
- 用VB将目录里所有文件及子目录存储到一个类型数组中后,将基其反映在Treeview控件上
- 查找目录下的及子目录下的 所有的给定后缀名的文件并将其路径打印到一个文件中。
- 将指定目录下的所有子文件或子目录加载到TreeView
- 在vb中调用javascript功能函数并将结果反映到WebBrowser上
- 在vb中调用javascript功能函数并将结果反映到WebBrowser上
- 将目录及子目录下的.jpg文件名提取到.txt文件中
- 一个将源目录下所有文件(含子目录)拷贝到一个新文件夹的小程序
- java 将源目录的所有文件(含子目录)拷贝到 目标目录中(运用File类实现)
- 遍历当前目录下所有的.h文件,并将其路径保存到文件中
- VC获取Excel所有工作表名,并将其显示到一个CListCtrl控件中
- 获取所有工作表名,并将其显示到一个CListCtrl控件中
- 从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中,再从该文件中读入这些数据,将其中小写字母转换成大写字母后显示在屏幕上
- 想要在当前目录及子目录中查找所有的‘ *.txt’文件,可以用:
- MFC将一个位图添加到数据库中并且将其读出来到指定的Picture控件上
- 将一个目录下的所有文件的文件名存入一个数组中
- C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)
- C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)
- 将一个指定目录下的java文件的绝对路径,存储到一个文本中
- Tomcat5.5(6.0)配置-多域名绑定和虚拟目录
- CURL常见问题
- MPEG2 TS的测量和分析
- 色阶的中间调调节原理之一
- 重建Hibernate的SessionFactory的方法(不重启服务)
- 用VB将目录里所有文件及子目录存储到一个类型数组中后,将基其反映在Treeview控件上
- ie toolbar开发经验总结
- It Rings a Bell 很耳熟
- Rational Rose 2003画图时“接口”图形的几个切换方式与效果
- 汉译英中需要注意的四个特殊问题
- 一拖二
- MPEG-2压缩编码技术原理应用
- 【转】[PowerShell教程][07]PowerShell中Write族cmdlet的介绍
- 新瓶旧酒ASP.NET AJAX(5) - 客户端脚本编程(Sys.UI命名空间下的类和快捷方法)