当前位置:首页 » 文件管理 » vb遍历文件夹

vb遍历文件夹

发布时间: 2022-03-12 14:59:35

‘壹’ VB6.0中怎样遍历一个路径下的所有内容

'看申明,选择遍历文件或者文件夹
Public Function sDirTraV30(ByVal strpath As String, ByRef strFiles() As String, Optional isTraWholeDir As Boolean = True, Optional isRecDir As Boolean = False) As Long
Dim lmax As Long
Dim strTmp As String
Dim sDirList() As String
Dim l As Long
Dim c As Long
Dim i As Integer

If Right$(strpath, 1) <> "\" Then strpath = strpath & "\"
On Error Resume Next
strTmp = Dir(strpath, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbVolume Or vbDirectory)
c = 0
If Len(strTmp) > 0 And isRecDir Then
lmax = UBound(strFiles) + 1
ReDim Preserve strFiles(lmax)
strFiles(lmax) = strpath
c = c + 1
End If
ReDim sDirList(-1 To -1)

Do While Len(strTmp) > 0
If GetAttr(strpath & strTmp) And vbDirectory Then If Asc(Left(strTmp, 1)) <> 46 Then
If isTraWholeDir Then
lmax = UBound(sDirList) + 1
ReDim Preserve sDirList(-1 To lmax)
sDirList(lmax) = strpath & strTmp
Else
lmax = UBound(strFiles) + 1
ReDim Preserve strFiles(lmax)
strFiles(lmax) = strpath & strTmp
c = c + 1
End If
End If
Else
lmax = UBound(strFiles) + 1
ReDim Preserve strFiles(lmax)
strFiles(lmax) = strpath & strTmp
c = c + 1
End If
strTmp = Dir
Loop

If isTraWholeDir Then
For l = 0 To UBound(sDirList)
c = c + sDirTraV30(sDirList(l), strFiles(), isTraWholeDir, isRecDir)
Next
End If
sDirTraV30 = c
End Function

'我一个小程序中的一段代码,使用了这个函数(遍历文件夹),给你看看用法。

Private Sub btnLogin_Click(Index As Integer)
Dim strFiles() As String
Dim tempStr As String
Dim lstStr() As String
Select Case Index
Case 0
Picture1(1).Visible = False
Picture1(2).Visible = False
Picture1(3).Visible = False
Picture1(0).Visible = True
Case 1
Picture1(0).Visible = False
Picture1(2).Visible = False
Picture1(3).Visible = False
Picture1(1).Visible = True

Case 2
Picture1(1).Visible = False
Picture1(0).Visible = False
Picture1(3).Visible = False
Picture1(2).Visible = True

If sDirTraV30(App.Path & "\Data\HX\setting\", strFiles(), False, False) = 0 Then Exit Sub

With lstJS
.ListItems.Clear
.ColumnHeaders.Clear
.View = lvwReport
.ColumnHeaders.Add , , "序号", 550
.ColumnHeaders.Add , , "已存在角色名称", lstJS.Width - 580
.ColumnHeaders(2).Alignment = lvwColumnCenter
End With
For i = 0 To UBound(strFiles)
strFiles(i) = Replace(strFiles(i), App.Path & "\Data\HX\setting\", "")
If StrComp(strFiles(i), "Default", vbTextCompare) <> 0 Then
If tempStr = "" Then
tempStr = strFiles(i)
Else
tempStr = tempStr & "," & strFiles(i)
End If
End If
Next

lstStr = Split(tempStr, ",")

For i = 0 To UBound(lstStr)
Set ListItemTemp = lstJS.ListItems.Add(, , i + 1)
ListItemTemp.SubItems(1) = lstStr(i)
Next

Case 3
Picture1(1).Visible = False
Picture1(2).Visible = False
Picture1(0).Visible = False
Picture1(3).Visible = True
End Select
End Sub

‘贰’ 使用VB遍历文件夹内的所有文件,文件夹内没有子文件夹,内含的文件最多15万

首先一个基本概念要先搞清楚:在FAT32文件系统中,一个文件夹内放的文件及子文件夹数量的上限是65534个(如果用了长文件名,这个数量会减少),而在NTFS文件系统中,这个值就变为4G-1即40多亿,几乎是无限了。你说的15万个文件的文件夹,那很显然是NTFS系统的。

其次,VB6是上世纪末出生的老古董软件,是32位的程序开发语言,它诞生的时候,FAT32是当时最常见也是最先进的文件系统,所以VB6也是按FAT32来操作文件的,再考虑到要兼容长文件名,所以VB6本身的控件和函数在一个文件夹中所能操作的文件数量限制是32767个(折半)。

因此,你这15万个文件的文件夹是无法用VB本身自带的控件或函数来遍历的,只能使用第三方控件或组件,比如大名鼎鼎的FSO:

DimfsoAsObject,fdAsObject,fAsObject
Setfso=CreateObject("Scripting.FileSystemObject")
Setfd=fso.GetFolder("要处理的文件夹全路径名写在这")
ForEachfInfd.Files
'这里是对遍历出的每个文件进行操作
'其中f.Name是文件名,f.Path是文件路径,
'f.Size是文件大小,f.Type是文件类型,等等
'为了防止卡顿,可以在这个循环里用下面这行:
'DoEvents
Next
Setfd=Nothing
Setfso=Nothing

我没测试,因为我没有这么多文件的文件夹。

如果这个方法也不行,那就只能用API了。

‘叁’ VB 如何遍历文件夹下所有文件,高手请指教

窗体上有四个控件,命令按钮command1。列表框list1。驱动器列表Drive1。文件夹列表Dir1。
驱动器和文件夹列表是用来选择你想要搜索的文件夹。
程序运行时选中你想要搜索的文件夹,单击搜索按钮。该文件夹下面所有的文件及子文件夹里面的文件都列到列表框中。
将代码复制到窗体即可。代码如下:

Private Sub Command1_Click()
List1.Clear
sosuofile (Dir1.List(Dir1.ListIndex))
MsgBox "搜索完毕!,共找到" + Str(List1.ListCount) + "条记录。", vbOKOnly + vbExclamation, "提示"
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Sub sosuofile(MyPath As String)
Dim Myname As String
Dim dir_i() As String
Dim i, idir As Long
If Right(MyPath, 1) <> "\\" Then MyPath = MyPath + "\\"
Myname = Dir(MyPath, vbDirectory Or vbHidden Or vbNormal Or vbReadOnly)
Do While Myname <> ""

If Myname <> "." And Myname <> ".." Then

If (GetAttr(MyPath & Myname) And vbDirectory) = vbDirectory Then '如果找到的是目录

idir = idir + 1

ReDim Preserve dir_i(idir) As String

dir_i(idir - 1) = Myname

Else: List1.AddItem "" & MyPath & " " & Myname '把找到的文件显示到列表框中

End If
End If
Myname = Dir '搜索下一项
Loop
For i = 0 To idir - 1

Call sosuofile(MyPath + dir_i(i))
Next i
ReDim dir_i(0) As String
End Sub

Private Sub Form_Load()
Command1.Caption = "搜索"
End Sub

‘肆’ vb.net如何遍历整个文件夹,后找出某一个文件

解压密码:1299
假设路径为C:\abc
代码:

Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim Files As ObjectModel.ReadOnlyCollection(Of String) = My.Computer.FileSystem.GetFiles("C:\abc") Dim FileSize As Long, FileName As String = Nothing Dim oFileSize As Long For Each File As String In Files oFileSize = My.Computer.FileSystem.GetFileInfo(File).Length If oFileSize > FileSize Then FileSize = oFileSize FileName = File End If Next Dim ListN As ListViewItem = New ListViewItem(My.Computer.FileSystem.GetName(FileName)) ListN.SubItems.Add(oFileSize & " byte") ListN.SubItems.Add(My.Computer.FileSystem.GetFileInfo(FileName).Extension & " 文件") ListN.SubItems.Add(FileName) ListView1.Items.Add(ListN) End SubEnd Class

详见源代码!!

‘伍’ vb遍历文件

只找出来路径?还是需要再做点什么别的?

可以通过 dir gdvdr**.fet /s /b >1.txt 将找到的文件生成的1.txt文件中,然后再用代码分析文件即可。

当然通过代码也可以自动调用和生成,减少了编写程序来编写的代码复杂度。

‘陆’ 如 何 在VB 中 实 现 目 录 遍 历

一、API 函 数 的 声 明、 自 定 义 数 据 类 型 及 常 量 的 定 义
---- 注 意:API 函 数 的 声 明 应 在 应 用 程 序 的 代 码 模 块 中 进 行, 且 一 条 声 明 必 须 放 在 一 行 中'API 函 数 的 声 明
Public Declare Function FindFirstFile Lib
"kernel32" Alias "FindFirstFileA"
(ByVal lpFileName As String,
lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib
"kernel32" Alias "FindNextFileA"
(ByVal hFindFile As Long, lpFindFileData
As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib
"kernel32" (ByVal hFindFile As Long) As Long

'最大路径长度和文件属性常量的定义
Public Const MAX_PATH = 260
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100

'自定义数据类型FILETIME和WIN32_FIND_DATA的定义
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
二、 去 掉 固 定 长 度 字 符 串 右 边 的NULL 字 符(ASCII 值 为0) 和SPACE 字 符(ASCII 值 为32)
---- 由 于 数 据 类 型WIN32_FIND_DATA 的cFileName 元 素 为 定 长 数 据 类 型 且 在 执 行 函 数FindFirstFile 和FindNextFile 后 会 有NULL 字 符, 因 此 需 去 掉 其 中 的 无 效 字 符。
Public Function fDelInvaildChr
(str As String) As String
On Error Resume Next
For i = Len(str) To 1 Step -1
If Asc(Mid(str, i, 1)) < >
0 And Asc(Mid(str, i, 1)) <> 32 Then
fDelInvaildChr = Left(str, i)
Exit For
End If
Next
End Function
三、 遍 历 主 函 数
---- 参 数 说 明:
strPathName要遍历的目录
objList 使用VB的内部控
件ListBox来存放遍历得到的路径,之所以
不使用字符串数组是因为数组大小不好定义

Public Sub sDirTraversal
(ByVal strPathName As String, ByRef objList As ListBox)
Dim sSubDir(200) As String
'存放当前目录下的子目录,下标可根据需要调整
Dim iIndex As Integer
'子目录数组下标
Dim i As Integer
'用于循环子目录的查找

Dim lHandle As Long
'FindFirstFileA的句柄
Dim tFindData As WIN32_FIND_DATA '
Dim strFileName As String '文件名

On Error Resume Next
'初始化变量
i = 1
iIndex = 0
tFindData.cFileName =
"" '初始化定长字符串

lHandle = FindFirstFile
(strPathName & "\*.*", tFindData)
If lHandle = 0 Then '查询结束或发生错误
Exit Sub
End If
strFileName = fDelInvaildChr(tFindData.cFileName)
If tFindData.dwFileAttributes = &H10 Then '目录
If strFileName <> "." And strFileName <> ".." Then
iIndex = iIndex + 1
sSubDir(iIndex) = strPathName
& "\" & strFileName '添加到目录数组
End If
Else
objList.AddItem strPathName
& "\" & strFileName
End If
'循环查找下一个文件,直到结束
Do While True
tFindData.cFileName = ""
If FindNextFile(lHandle, tFindData)
= 0 Then '查询结束或发生错误
FindClose (lHandle)
Exit Do
Else
strFileName = fDelInvaildChr
(tFindData.cFileName)
If tFindData.dwFileAttributes = &H10 Then
If strFileName <> "." And strFileName <> ".." Then
iIndex = iIndex + 1
sSubDir(iIndex) = strPathName
& "\" & strFileName '添加到目录数组
End If
Else
objList.AddItem strPathName & "\" & strFileName
End If
End If
Loop
'如果该目录下有目录,则根据目录数组递归遍历
If iIndex > 0 Then
For i = 1 To iIndex
sDirTraversal sSubDir(i), objList
Next
End If
End Sub
---- 利 用 以 上 遍 历 方 法, 读 者 可 以 根 据 数 据 类 型WIN32_FIND_DATA 的dwFileAttributes、ftCreationTime、ftLastAccessTime、ftLastWriteTime 元 素 来 扩 充 文 件 查 询 功 能( 按 文 件 属 性、 创 建 日 期、 最 后 修 改 日 期、 最 后 访 问 日 期 等 不 同 条 件 的 查 询)。

‘柒’ vb6 中 遍历指定文件夹中的文本文件

SubsFile(dAsString)
DimfsoAsObject,tdAsObject,ffAsObject,ddAsObject
Setfso=CreateObject("scripting.filesystemobject")
Settd=fso.getfolder(d)
ForEachffIntd.Files
IfLCase(Right(ff.Name,4))=".txt"ThenList1.AddItemff.Path
Next
IfCheck1.Value=1Then
ForEachddIntd.subfolders
sFiledd.Path
Next
EndIf
EndSub

PrivateSubCommand3_Click()
List1.Clear
sFileText2.Text
EndSub

‘捌’ VB遍历文件夹中的图片

添加文件列表控件,filelist
Dim Shunxu As Integer, zongshu As Integer, strfilename As String
Private Sub Form_Load()
File1.Path = "d:\" ' "d:\123\图片文件夹" '文件夹路径
File1.Pattern = "*.gif" '文件格式
Timer1.Interval = 1000
Timer1.Enabled = True
zongshu = File1.ListCount '总数
Shunxu = 0
End Sub

Private Sub Timer1_Timer()
If zongshu > 0 Then
strfilename = File1.List(Shunxu) '图片文件名
Image1.Picture = LoadPicture(File1.Path + "\" + strfilename) '图片文件路径
Shunxu = Shunxu + 1
If Shunxu = zongshu - 1 Then
Shunxu = 0
End If
End If
End Sub

‘玖’ vb6.0怎样遍历一个指定文件夹

楼主啊.这个刚好我前几天做过..代码粘过来吧..Dim mypath As String '定义路径mypath = App.path & "\" & "photos "目标文件夹Dim stmp$stmp = Dir(mypath & "\*", vbDirectory) While stmp <> vbNullString Combo1.AddItem stmp stmp = Dir()
Wend

‘拾’ vb遍历指定文件夹下所有文本内容

这个程序要求用到的东西不容易用几句话说清,

打开文件功能中允许选择多个文件,
选择文件之后,将多个选择的文件合并到一个文件中

如果 txt 文件都是 ANSI 编码相对简单一些,用 OPEN 就可以进行,如果格式不统一,就要 Unicode/UTF8 等等处理函数了

热点内容
c语言访问http 发布:2024-05-05 20:04:14 浏览:873
什么可以配置波尔多叶 发布:2024-05-05 20:00:32 浏览:962
cgxrar解压密码 发布:2024-05-05 19:47:24 浏览:632
ubuntu编译linux内核 发布:2024-05-05 19:46:05 浏览:7
php静态方法调用对象 发布:2024-05-05 19:24:30 浏览:367
电脑LNS服务器地址 发布:2024-05-05 19:22:15 浏览:376
不属于编译程序组成的部分是什么 发布:2024-05-05 19:05:34 浏览:613
压缩面食 发布:2024-05-05 18:55:45 浏览:804
linux的gz解压命令 发布:2024-05-05 18:24:13 浏览:311
服务器机柜属于什么辐射 发布:2024-05-05 18:02:10 浏览:336