Записать имена всех файлов, их размер и местоположение на дисках C:D - VB

Узнай цену своей работы

Формулировка задачи:

Пример такой текстовый файл Курсовая.doc (5Мб) C:\Desktop\work\курсовая.doc и таким образом все файлы Как реализовать?

Решение задачи: «Записать имена всех файлов, их размер и местоположение на дисках C:D»

textual
Листинг программы
  1. ' Поиск файлов на дисках, в папках и подпапках
  2. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  3. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
  4. Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
  5. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  6.  
  7. Const MAX_PATH = 260
  8. Const MAXDWORD = &HFFFF
  9. Const INVALID_HANDLE_VALUE = -1
  10. Const FILE_ATTRIBUTE_ARCHIVE = &H20
  11. Const FILE_ATTRIBUTE_DIRECTORY = &H10
  12. Const FILE_ATTRIBUTE_HIDDEN = &H2
  13. Const FILE_ATTRIBUTE_NORMAL = &H80
  14. Const FILE_ATTRIBUTE_READONLY = &H1
  15. Const FILE_ATTRIBUTE_SYSTEM = &H4
  16. Const FILE_ATTRIBUTE_TEMPORARY = &H100
  17.  
  18. Private Type FILETIME
  19.     dwLowDateTime As Long
  20.     dwHighDateTime As Long
  21. End Type
  22.  
  23. Private Type WIN32_FIND_DATA
  24.     dwFileAttributes As Long
  25.     ftCreationTime As FILETIME
  26.     ftLastAccessTime As FILETIME
  27.     ftLastWriteTime As FILETIME
  28.     nFileSizeHigh As Long
  29.     nFileSizeLow As Long
  30.     dwReserved0 As Long
  31.     dwReserved1 As Long
  32.     cFileName As String * MAX_PATH
  33.     cAlternate As String * 14
  34. End Type
  35. Function StripNulls(OriginalStr As String) As String
  36.     If (InStr(OriginalStr, Chr(0)) > 0) Then
  37.         OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
  38.     End If
  39.     StripNulls = OriginalStr
  40. End Function
  41.  
  42. Function FindFilesAPI(path As String, SearchStr As String, FileCount As Integer, DirCount As Integer)
  43.     Dim FileName As String
  44.     Dim DirName As String
  45.     Dim dirNames() As String
  46.     Dim nDir As Integer
  47.     Dim i As Integer
  48.     Dim hSearch As Long
  49.     Dim WFD As WIN32_FIND_DATA
  50.     Dim Cont As Integer
  51.     Dim LenF As Double
  52.     If Right(path, 1) <> "\" Then path = path & "\"
  53.    
  54.     nDir = 0
  55.     ReDim dirNames(nDir)
  56.     Cont = True
  57.     hSearch = FindFirstFile(path & "*", WFD)
  58.     If hSearch <> INVALID_HANDLE_VALUE Then
  59.         Do While Cont
  60.         DirName = StripNulls(WFD.cFileName)
  61.        
  62.         If (DirName <> ".") And (DirName <> "..") Then
  63.            
  64.             If GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then
  65.                 dirNames(nDir) = DirName
  66.                 DirCount = DirCount + 1
  67.                 nDir = nDir + 1
  68.                 ReDim Preserve dirNames(nDir)
  69.             End If
  70.         End If
  71.         Cont = FindNextFile(hSearch, WFD) 'Get next subdirectory.
  72.        DoEvents
  73.         Loop
  74.         Cont = FindClose(hSearch)
  75.     End If
  76.    
  77.     hSearch = FindFirstFile(path & SearchStr, WFD)
  78.     Cont = True
  79.     If hSearch <> INVALID_HANDLE_VALUE Then
  80.         While Cont
  81.             FileName = StripNulls(WFD.cFileName)
  82.             If (FileName <> ".") And (FileName <> "..") Then
  83.                 FindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow
  84.                 FileCount = FileCount + 1
  85.                 LenF = Round((FileLen(path & FileName)) / 1024, 2)
  86.                 List1.AddItem Str(LenF) & " КБ " & path & FileName
  87.             End If
  88.             Cont = FindNextFile(hSearch, WFD) ' Get next file
  89.        Wend
  90.         Cont = FindClose(hSearch)
  91.     End If
  92.    
  93.     If nDir > 0 Then
  94.        
  95.         For i = 0 To nDir - 1
  96.             FindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(i) & "\", SearchStr, FileCount, DirCount)
  97.         Next i
  98.     End If
  99. End Function
  100. Sub Command1_Click()
  101.     Dim SearchPath As String, FindStr As String
  102.     Dim FileSize As Long
  103.     Dim NumFiles As Integer, NumDirs As Integer
  104.     Screen.MousePointer = vbHourglass
  105.     List1.Clear
  106.     SearchPath = Text1.Text
  107.     FindStr = Text2.Text
  108.     FileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs)
  109.    
  110.     Screen.MousePointer = vbDefault
  111. End Sub
  112.  
  113. Private Sub Form_Load()
  114. Text1.Text = "C:\"
  115. Text2.Text = "*.*"
  116. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы