Windows apps
Collapse the table of content
Expand the table of content
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

How to: Copy Directories


This example demonstrates how to use I/O classes to synchronously copy the contents of a directory to another location. In this example, the user can specify whether to also copy the subdirectories. If the subdirectories are copied, the method in this example recursively copies them by calling itself on each subsequent subdirectory until there are no more to copy.

For an example of copying files asynchronously, see Asynchronous File I/O.

using System;
using System.IO;

class DirectoryCopyExample
    static void Main()
        // Copy from the current directory, include subdirectories.
        DirectoryCopy(".", @".\temp", true);

    private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
        // Get the subdirectories for the specified directory.
        DirectoryInfo dir = new DirectoryInfo(sourceDirName);

        if (!dir.Exists)
            throw new DirectoryNotFoundException(
                "Source directory does not exist or could not be found: "
                + sourceDirName);

        DirectoryInfo[] dirs = dir.GetDirectories();
        // If the destination directory doesn't exist, create it.
        if (!Directory.Exists(destDirName))
        // Get the files in the directory and copy them to the new location.
        FileInfo[] files = dir.GetFiles();
        foreach (FileInfo file in files)
            string temppath = Path.Combine(destDirName, file.Name);
            file.CopyTo(temppath, false);

        // If copying subdirectories, copy them and their contents to new location.
        if (copySubDirs)
            foreach (DirectoryInfo subdir in dirs)
                string temppath = Path.Combine(destDirName, subdir.Name);
                DirectoryCopy(subdir.FullName, temppath, copySubDirs);

File and Stream I/O
Common I/O Tasks
Asynchronous File I/O

© 2017 Microsoft