看看VB的FILESYSTEMOBJECT(简称FSO),你就会霍然开朗的
解决方案 »
- 客户端winsock断开后怎样自动与服务器端重新建立连接?
- 调用摄像头的一个基本问题
- VB 怎样实现超长窗体??
- 咋选打印机呢?彻底服了,选啊选啊……2005-11-03 02:26:25
- 如何得到拷贝文件所用的精确时间?
- winsock传送文件已成功,但是文件名如何传过去呢?
- AdamBear(学习再学习)于前日回答《ACCESS97转2000格式问题》,再三加分100
- 求救DLL调用错误!
- 求判断字符串所代表的文件是否存在最优的办法
- MSDATGRD.OCX相关联的文件用DEPENDENCY 1.0 版和2.2版解析出来的关联文件为什么不一样
- 程序运行错误,帮忙看看!将感激不尽
- VB 浏览器临时文件保存
至于获取文件名,可以用api
Private Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" (ByVal lpszFile As String, ByVal lpszTitle _ As String, ByVal cbBuf As Integer) As Integer
Dim strFile As String
Dim objCol As Collection
Set objCol = New Collection
If Right(Path, 1) <> "\" Then
Path = Path & "\"
End If
strFile = Dir(Path & "*.*", vbSystem Or vbHidden)
Do While Len(strFile) > 0
objCol.Add Path & strFile
strFile = Dir()
Loop
Set GetFileList = objCol
End Function
Dim strFilepath As String
Dim objFolder As Folder
Dim objSubFolder As Folder
Dim fs As New FileSystemObject
On Error GoTo ErrHandle
DoEvents
strFilepath = "d:\result\"
Set objFolder = fs.GetFolder(strFilepath)
'检索子目录
If objFolder.SubFolders.Count > 0 Then
For Each objSubFolder In objFolder.SubFolders
For i = 1 To fileResult.ListCount
//todo here
Next i
Next
End If
Set objFolder = Nothing: Set objSubFolder = Nothing
Exit Sub
ErrHandle:
Set objFolder = Nothing: Set objSubFolder = Nothing
Set fc = f.Files
For Each f1 in fc
s = s & f1.name
s = s & vbCrLf
Next
Public Sub ShowFileList(ByVal Path As String)
Dim strFile As String
If Right(Path, 1) <> "\" Then Path = Path & "\"
strFile = Dir(Path,7)
Do While Len(strFile) > 0
objCol.Add Path & strFile
debug.print Dir()
Loop
End Sub
Private Sub Command1_Click()
Dim strFile As String
If Right(Path, 1) <> "\" Then Path = "D:\"
strFile = Dir(Path, 7)
Do
Debug.Print CStr(strFile)
strFile = Dir()
Loop While Len(strFile) > 0
End Sub
http://www.egooglet.com论坛交流:
http://bbs.egooglet.com
方法如下:
1.定义一个动态数组,用于保存该目录下找到的子目录.数组上界决定保存多少个子目录.2.添加一个LISTBOX控件.用于保存找到的文件.(也同样可以用动态数组)
3.搜索目标目录.
4.当在目标目录中找到文件时,判断是不是文件夹.(可以用If (lpfindfiledata.dwFileAttributes >= 16 And lpfindfiledata.dwFileAttributes <= 22) OR LPFINDFILEDATA.DWFILEATTRIBUTES = &H10 Then来判断是不是文件夹)
5.根据判断来决定把搜索结果保存在哪个地方.
6.通过循环来遍历目标目录.(递归调用)
这样就可以把目标目录中的所有文件搜索出来.通过结合WIN32_FIND_DATA中的属性和简单的判断..就可以过滤出想要的结果.如果数组是多维的,还可以储存相关信息用于再次过滤或比较.
会用到FINDFIRSTFILE.FINDNEXTFILE.FINDCLOSE三个API
1.关于判断里面的16, 22可以根据实际情况修改.(看操作系统了)
2.记得过滤掉"."和"..",可以用这个RIGHT(STR,1) <> "."
3.实际上就是把FINDFIRSTFILE用来做初始化搜索.根据句柄来调用FINDNEXTFILE.当以上中有一掉用后找不到任何文件时.FINDCLOSE关闭句柄.
4.通过把数组1中的每个元素调用FINDFIRSTFILE.并根据句柄来循环调用FINDNEXTFILE.就可以把目标路径内的所有文件包括子目录和子目录中的所有文件全都搜索出来.
5.结合WIN32_FIND_DATA和LPFINDFILEDATA.???.就可以找出你要的东西.
6.如果只要某扩展名的文件.那么WIN32_FIND_DATA中的CFINENAME就可以满足你.
三个API完成搜索.过滤.和比较.WIN32_FIND_DATA中包含了文件名.文件时间(创建,修改,访问).文件属性.文件大小等等多个元素.合理使用可以完成很多功能.
需要源码么?:)