get filename

eggbaby 2000-07-12 09:28:00
如何得到一个目录下所有文件的文件名?
...全文
110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyang 2000-07-12
  • 打赏
  • 举报
回复
这是最烦的,不过 ....也是最安全的。

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
Public Const INVALID_HANDLE_VALUE = -1
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

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


private sub ListFiles(byval strPath as string)
Dim strFile As String
Dim strFile As String
Dim lngResult As Long
Dim I As Integer
Dim hFindFile As Long
Dim FindFileType As WIN32_FIND_DATA
Dim iPos As Integer
Dim hFile As Long
Dim fst As OFSTRUCT

hFindFile = FindFirstFile(strPath & "\*.*" & Chr(0), FindFileType)
If hFindFile <> INVALID_HANDLE_VALUE Then
iPos = InStr(FindFileType.cFileName, Chr(0))
strFile = Mid(FindFileType.cFileName, 1, iPos - 1)

Do Until strFile = ""
'listfiles
If FindNextFile(hFindFile, FindFileType) = 0 Then
Exit Do
End If
iPos = InStr(FindFileType.cFileName, Chr(0))
strFile = Mid(FindFileType.cFileName, 1, iPos - 1)
Loop
FindClose hFindFile
End If
end sub
eggbaby 2000-07-12
  • 打赏
  • 举报
回复
能给出具体一点的源程序吗?
茂奇软件 2000-07-12
  • 打赏
  • 举报
回复
win32 sdk api in vc++
findfirstfile()
findnextfile()
findclose().
I think you can find same api for these functions.
kuankuan 2000-07-12
  • 打赏
  • 举报
回复
sub ListFileName(fd as folder)
dim sfd as folder
dim f as file
for each sfd in fd.subfolders
for each f in sfd.files
Debug.print f.name
next
ListFileName sfd
next
end sub

liyang 2000-07-12
  • 打赏
  • 举报
回复
在vb中好像没有什么好方法。一个用dir 轮寻。一个用findfirstfile,findnextfile,fileclose。
要么用 microsoft scripting runtime中的filesystemobject.这个比较简单。
用fs的getfolder得到一个folder对象,folder对象中有files集合,轮寻即可拿到所有文件。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧