C#中的文件夹副本

ven*_*kat 13 c#

我的机器中有一个包含10个文本文件的文件夹,位于C:\ TEXTFILES\drive.我想将文件夹TEXTFILES及其内容从我的机器完全复制到另一台机器.如何使用C#复制它.

Ben*_*nny 34

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

来自MSDN

  • 如果目标计算机未连接或希望凭据完成操作,您期望结果如何?如果目标机器不可用,我认为异常将是适当的行为,因为我无法想出任何方式强制目标在线.如果需要凭据,则可能会显示请求凭据的对话框. (3认同)

小智 9

private void copyDirectory(string strSource, string strDestination)
{
    if (!Directory.Exists(strDestination))
    {
        Directory.CreateDirectory(strDestination);
    }

    DirectoryInfo dirInfo = new DirectoryInfo(strSource);
    FileInfo[] files = dirInfo.GetFiles();
    foreach(FileInfo tempfile in files )
    {
        tempfile.CopyTo(Path.Combine(strDestination,tempfile.Name));
    }

    DirectoryInfo[] directories = dirInfo.GetDirectories();
    foreach(DirectoryInfo tempdir in directories)
    {
        copyDirectory(Path.Combine(strSource, tempdir.Name), Path.Combine(strDestination, tempdir.Name));
    }

}
Run Code Online (Sandbox Code Playgroud)