Partilhar via


Como: Copiar pastas

Este exemplo demonstra como utilizar classes de E/S para copiar uma pasta de um local para outro. Nesse exemplo, o usuário pode especificar se deseja copiar também as subpastas. Se os subdiretórios forem copiados, o método, nesse exemplo, os copia recursivamente, chamando a si próprio em cada subdiretório subsequente, até que não haja mais o que copiar.

Exemplo

Imports System
Imports System.IO

Class DirectoryCopyExample

    Shared Sub Main()
        DirectoryCopy(".", ".\\temp", True)
    End Sub 'Main

    Private Shared Sub DirectoryCopy( _
        ByVal sourceDirName As String, _
        ByVal destDirName As String, _
        ByVal copySubDirs As Boolean)

        Dim dir As DirectoryInfo = New DirectoryInfo(sourceDirName)
        Dim dirs As DirectoryInfo() = dir.GetDirectories()

        ' If the source directory does not exist, throw an exception.
        If Not dir.Exists Then
            Throw New DirectoryNotFoundException( _
                "Source directory does not exist or could not be found: " _
                + sourceDirName)
        End If

        ' If the destination directory does not exist, create it.
        If Not Directory.Exists(destDirName) Then
            Directory.CreateDirectory(destDirName)
        End If

        ' Get the file contents of the directory to copy.
        Dim files As FileInfo() = dir.GetFiles()

        For Each file In files

            ' Create the path to the new copy of the file.
            Dim temppath As String = Path.Combine(destDirName, file.Name)

            ' Copy the file.
            file.CopyTo(temppath, False)
        Next file

        ' If copySubDirs is true, copy the subdirectories.
        If copySubDirs Then

            For Each subdir In dirs

                ' Create the subdirectory.
                Dim temppath As String = _
                    Path.Combine(destDirName, subdir.Name)

                ' Copy the subdirectories.
                DirectoryCopy(subdir.FullName, temppath, copySubDirs)
            Next subdir
        End If
    End Sub
End Class
using System;
using System.IO;

class DirectoryCopyExample
{
    static void Main()
    {
        DirectoryCopy(".", @".\temp", true);
    }

    private static void DirectoryCopy(
        string sourceDirName, string destDirName, bool copySubDirs)
    {
      DirectoryInfo dir = new DirectoryInfo(sourceDirName);
      DirectoryInfo[] dirs = dir.GetDirectories();

      // If the source directory does not exist, throw an exception.
        if (!dir.Exists)
        {
            throw new DirectoryNotFoundException(
                "Source directory does not exist or could not be found: "
                + sourceDirName);
        }

        // If the destination directory does not exist, create it.
        if (!Directory.Exists(destDirName))
        {
            Directory.CreateDirectory(destDirName);
        }


        // Get the file contents of the directory to copy.
        FileInfo[] files = dir.GetFiles();

        foreach (FileInfo file in files)
        {
            // Create the path to the new copy of the file.
            string temppath = Path.Combine(destDirName, file.Name);

            // Copy the file.
            file.CopyTo(temppath, false);
        }

        // If copySubDirs is true, copy the subdirectories.
        if (copySubDirs)
        {

            foreach (DirectoryInfo subdir in dirs)
            {
                // Create the subdirectory.
                string temppath = Path.Combine(destDirName, subdir.Name);

                // Copy the subdirectories.
                DirectoryCopy(subdir.FullName, temppath, copySubDirs);
            }
        }
    }
}

Consulte também

Tarefas

Como: Criar uma listagem de diretório

Conceitos

Arquivo básico de E/S

Tarefas comuns de E/S