Copy directory

  • Thread starter Thread starter Regan Hurd
  • Start date Start date
You have to code it yourself, see various examples on th google search
 
If you want to copy an entire directory structure, including all sub-files
and their sub-folders and henceforth, then you'll have to write a recursive
method.

--
HTH,
-- Tom Spink, Über Geek

Please respond to the newsgroup,
so all can benefit

"Maybe it's a game called 'Punish the User'"
 
Hi Regan,

It's not too easy, because you have to run a recursive routine to get all
the subs and the files they contain.

I wrote several routines in an effort to use this concept to save .net
solutions in order to provide backup copies. I won't bore you with all the
details; instead, below is the code that makes it happen, which I'm sure
you'll be able to follow along and work with:
Imports System.IO

Public Class Form1

Inherits System.Windows.Forms.Form

Public selectedsubs As New ArrayList()

Public subs2 As New ArrayList()



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim dirinfo As New DirectoryInfo("c:\vsapps\")

For Each dirinfo In dirinfo.GetDirectories()

solutionsbox.Items.Add(dirinfo.Name)

Next

End Sub

Private Sub saveit_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles saveit.Click

Dim dirsys As Directory

Dim copytopath As String

Dim dirfullpath As String

Dim solselectionsarray As String

Dim mdirectory As DirectoryInfo

Dim mfile As FileInfo

Dim dfile As File()

Dim destinationfile As String

Dim solutionsboxfp As New ArrayList()

Dim shortstring, stringfront As String

Dim i, j, startpos As Integer

Me.Cursor = Cursors.WaitCursor

For Each solselectionsarray In solutionsbox.CheckedItems

selectedsubs.Add("c:\vsapps\" & solselectionsarray)

Next

subs2.Clear()

For i = 0 To selectedsubs.Count - 1

mdirectory = New DirectoryInfo(selectedsubs(i))

listdirectories(mdirectory)

Next

For j = 0 To subs2.Count - 1

mdirectory = New DirectoryInfo(subs2(j))

startpos = InStrRev(mdirectory.FullName, "\")

shortstring = Mid(mdirectory.FullName, startpos + 1)

stringfront = Mid(mdirectory.FullName, 11)

If dirsys.Exists("c:\dotnetsource\" & stringfront) Then

Else

dirsys.CreateDirectory("c:\dotnetsource\" & stringfront)

End If

For Each mfile In mdirectory.GetFiles

destinationfile = "c:\dotnetsource\" & stringfront & "\" & mfile.Name

File.Copy(mfile.FullName, destinationfile, True)

Next

Next

Me.Cursor = Cursors.Default

Application.Exit()



End Sub

Sub listdirectories(ByVal thedirectory As DirectoryInfo)

Dim tempdir As DirectoryInfo

subs2.Add(thedirectory.FullName)

For Each tempdir In thedirectory.GetDirectories()

listdirectories(tempdir)

Next

End Sub

End Class



HTH,

Bernie Yaeger
 
Hi Regan, Bernie,

Don't forget to add appropriate Exception handling. Do you hate it when
Shell says can't copy this file and aborts the whole operation? I certainly
do.

Regards,
Fergus
 
Hello,

Bernie Yaeger said:
Public Class Form1

Inherits System.Windows.Forms.Form

Public selectedsubs As New ArrayList()

Public subs2 As New ArrayList()



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim dirinfo As New DirectoryInfo("c:\vsapps\")

For Each dirinfo In dirinfo.GetDirectories()

solutionsbox.Items.Add(dirinfo.Name)

Next

End Sub

Private Sub saveit_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles saveit.Click

Dim dirsys As Directory

Dim copytopath As String

Dim dirfullpath As String

Dim solselectionsarray As String

Dim mdirectory As DirectoryInfo

Dim mfile As FileInfo

Dim dfile As File()

Dim destinationfile As String

Dim solutionsboxfp As New ArrayList()

Dim shortstring, stringfront As String

Dim i, j, startpos As Integer

Me.Cursor = Cursors.WaitCursor

For Each solselectionsarray In solutionsbox.CheckedItems

selectedsubs.Add("c:\vsapps\" & solselectionsarray)

Next

subs2.Clear()

For i = 0 To selectedsubs.Count - 1

mdirectory = New DirectoryInfo(selectedsubs(i))

listdirectories(mdirectory)

Next

For j = 0 To subs2.Count - 1

mdirectory = New DirectoryInfo(subs2(j))

startpos = InStrRev(mdirectory.FullName, "\")

shortstring = Mid(mdirectory.FullName, startpos + 1)

stringfront = Mid(mdirectory.FullName, 11)

If dirsys.Exists("c:\dotnetsource\" & stringfront) Then

Else

dirsys.CreateDirectory("c:\dotnetsource\" & stringfront)

End If

For Each mfile In mdirectory.GetFiles

destinationfile = "c:\dotnetsource\" & stringfront & "\" & mfile.Name

File.Copy(mfile.FullName, destinationfile, True)

Next

Next

Me.Cursor = Cursors.Default

Application.Exit()



End Sub

Sub listdirectories(ByVal thedirectory As DirectoryInfo)

Dim tempdir As DirectoryInfo

subs2.Add(thedirectory.FullName)

For Each tempdir In thedirectory.GetDirectories()

listdirectories(tempdir)

Next

End Sub

End Class

Please paste the code into notepad before pasting it into a posting.
This will preserve indentation.
 
Back
Top