Получение файлов в папках

Я хочу просмотреть / показать все файлы как в папке, которую я просматриваю (/uploads), так и во всех подпапках в '/uploads'.

Мой вопрос заключается в том, могу ли я легко сделать это на основе имеющегося кода, который работает. (Он читает файлы в папке и переименовывает их)

 If Not IsPostBack Then
            'Dim pathIn As String
            Dim pathOut As String
            Dim vDate As String = DateTime.Now.ToString("yyyy-MM-dd")

            Dim filePaths() As String = Directory.GetFiles(Server.MapPath("~/Uploads/"))
            Dim files As List(Of ListItem) = New List(Of ListItem)
            For Each filePath As String In filePaths
                files.Add(New ListItem(Path.GetFileName(filePath), filePath))

                ' pathIn = filePath
                'RENAMES FILES HERE
                pathOut = "C:\sites\Examples\FilesInFolderList\Uploads\" & vDate & "_" & Replace(filePath, Server.MapPath("~/Uploads/"), "")

                '' Move the file.
                File.Move(filePath, pathOut)
                Console.WriteLine("{0} moved to {1}", filePath, pathOut)


            Next
            GridView1.DataSource = files
            GridView1.DataBind()
        End If

1 ответ

Решение

Используя DirectoryInfo.GetFiles, вы можете искать в подкаталогах.

    If Not IsPostBack Then
        Dim pathOut As String
        Dim vDate As String = DateTime.Now.ToString("yyyy-MM-dd")
        Dim files As New List(Of ListItem)
        For Each File As FileInfo In New DirectoryInfo(Server.MapPath("~/Uploads/")).GetFiles("*.*", SearchOption.AllDirectories)
            files.Add(New ListItem(File.Name, File.FullName))
            pathOut = "C:\sites\Examples\FilesInFolderList\Uploads\" & vDate & "_" & File.Name
            Console.WriteLine("{0} moving to {1}", File.FullName, pathOut)
            File.MoveTo(pathOut)
        Next
        GridView1.DataSource = files
        GridView1.DataBind()
    End If
Другие вопросы по тегам