• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2065
  • Last Modified:

Display a list of files from a directory in a datagridview

Hello,

I am trying to display all the files in a network share folder which are of type: .doc .xls .pdf
The code im trying to use is pasted in the code snippet box. But it is adapted from this:


       Dim dt As New DataTable  
        dt.Columns.Add("File Name")  
        dt.Columns.Add("File Path")  
 
        'Harvest the file paths  
        Dim files As New List(Of String)  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.jpg", IO.SearchOption.AllDirectories))  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.gif", IO.SearchOption.AllDirectories))  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.png", IO.SearchOption.AllDirectories))  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.bmp", IO.SearchOption.AllDirectories))  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.tif", IO.SearchOption.AllDirectories))  
 
        'Load the temp table  
        For Each file As String In files  
            dt.Rows.Add(New Object() {System.IO.Path.GetFileName(file), file})  
        Next  
 
        'Bind to the result  
        Me.BindingSource1.DataSource = dt  

'Setup the temp table   
        Dim dt As New DataTable
        dt.Columns.Add("File Name")
        dt.Columns.Add("File Path")
 
        'Harvest the file paths   
        Dim files As New List(Of String)
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.doc", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.docx", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.pdf", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.xls", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.ico", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.png", IO.SearchOption.AllDirectories))
 
        'Load the temp table   
        For Each file As String In files
            dt.Rows.Add(New Object() {System.IO.Path.GetFileName(file), file})
        Next
 
        'Bind to the result   
        Me.BindingSourceDocs.DataSource = dt
 
        Me.historyDocs.AutoGenerateColumns = True
        Me.historyDocs.DataSource = Me.BindingSourceDocs

Open in new window

0
drews1f
Asked:
drews1f
  • 3
  • 2
1 Solution
 
jorgesv13Commented:
Okay, what's your specific problem?
are you getting an error or something?
0
 
drews1fAuthor Commented:
yes i was string cannot be transfered into integer or something but ive managed to fix it.
code attached incase anyones wondering :0

Only slight problem i still have is the code will only show the files in that specific dir and not from any dirs beneath it. ie

MY_OFFICE\
                   |  1.JPG

MY_OFFICE\CLIENTS\HISTORY\139187
                                                                |   2.JPG
                                                                |   3.JPG

if the dir was to just MY_OFFICE\ then i would only get 1.JPG and not the other 2 files.
How can i adjust my code to capture the sub dirs?

Many thanks
        Dim dirPath As String
        dirPath = "\\myfinserv\MY_OFFICE\CLIENTS\HISTORY\139187"
        'Setup the temp table   
        Dim dt As New DataTable
        dt.Columns.Add("File Name")
        dt.Columns.Add("File Path")
 
        'Harvest the file paths   
        Dim files As New List(Of String)
        files.AddRange(Directory.GetFiles(dirPath, "*.ico"))
        files.AddRange(Directory.GetFiles(dirPath, "*.png"))
 
 
        'Load the temp table   
        For Each file As String In files
            dt.Rows.Add(New Object() {System.IO.Path.GetFileName(file), System.IO.File.GetCreationTime(file)})
        Next
 
        'Bind to the result   
        Me.BindingSourceDocs.DataSource = dt
 
        Me.historyDocs.AutoGenerateColumns = True
        Me.historyDocs.DataSource = Me.BindingSourceDocs

Open in new window

0
 
jorgesv13Commented:
Just add the "AllDirectories" modifier:
 files.AddRange(Directory.GetFiles(dirPath, "*.ico",SearchOption.AllDirectories))
        files.AddRange(Directory.GetFiles(dirPath, "*.png",SearchOption.AllDirectories))

Open in new window

0
 
drews1fAuthor Commented:
lol yeh just figured that out!!! duhhhhh!!!! im so new!
thanks a bundle anyway mate :)
hope the code here helps someone cause its taken me 2 hours to get right!!
0
 
jorgesv13Commented:
But you might want to validate that the file string is indeed a file and not a directory:
For Each file As String In files
if not directory.Exists(file) then
            dt.Rows.Add(New Object() {System.IO.Path.GetFileName(file), System.IO.File.GetCreationTime(file)})
end if
        Next

Open in new window

0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now