Как правильно посчитать количество файлов в папке

Я делаю список папок, где каждая папка нуждается только в нескольких свойствах, поэтому я использую класс ниже. Тем не менее, независимо от папки, FilesInFolder Свойство всегда на 5 больше, чем фактическое количество файлов в папке.

Может кто-нибудь, пожалуйста, помогите мне узнать, что не так? Благодарю.

Public Class Single_Action_Folder

    Public ReadOnly FullName As String = ""
    Public ReadOnly Name As String = ""
    Public ReadOnly FilesInFolder As Integer = 0
    Public ReadOnly Exists As Boolean = False

    '**
    ' Constructor
    '*
    Public Sub New(Optional dir As DirectoryInfo = Nothing)

        ' First check that a directory has been specified
        If dir Is Nothing Then Exit Sub

        ' Populate the class properties
        FullName = dir.FullName
        Name = dir.Name
        FilesInFolder = dir.GetFiles().Count
        Exists = dir.Exists

    End Sub

End Class

2 ответа

Решение

Так что проблема здесь в том, что FilesInFolder = dir.GetFiles().Count считал скрытые файлы. Несмотря на то, что я установил параметры папок Windows для отображения скрытых файлов / папок, они не отображались, поскольку они были похожи на обложки альбомов. Следующая строка отсортировала мою проблему.

FilesInFolder = Directory.GetFiles(FullName, "*.mp3").Count

Мне интересно, хотя, есть ли способ считать более одного типа файла? Т.е. MP3 и WMA? Если кто-то знает, я бы оценил комментарий.

Убедитесь, что у вас нет скрытых файлов в проверенных каталогах. Я проверяю ваш код на моем ПК, и он работает хорошо.

Используйте этот код:

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Dim FilesInFolder = Directory.GetFiles("C:\BGS\TemporaryProjects\Images\", "*.mp3").Count
    Dim i As Integer = 1
    While i <= FilesInFolder
        ListBox1.Items.Add(i)
        i += 1
    End While
End Sub
Другие вопросы по тегам