2

要求:

我需要将位于机器 A 中的文件夹/目录及其内容成功复制到机器 B。

在开始复制之前,需要根据我的要求考虑以下几点。

  1. 如果目标计算机,目标文件夹是否具有访问权限,用户需要从源文件夹或目录复制。

  2. 目标目录不应隐藏或共享,如果已存在则应为空。

  3. 目标机器期望访问凭据,以相应地处理相同

如何实现这一目标?

我无法使用以下代码实现:

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);
        }
    }
 }
}
4

4 回答 4

2

您的所有这些信息都在DirectoryInfo您的DirectoryInfo dirInfo = new DirectoryInfo(path);

于 2009-12-30T09:41:05.247 回答
2

您的代码片段并没有真正在两台机器之间复制文件,而是在同一台机器内复制文件。从您的 Main 方法中可以明显看出这一点。

如果您想在机器之间传输并且也想传输到非共享位置,您可能应该检查套接字。

如果它是具有适当权限集的共享位置,那么 File.copy 将为您提供帮助。

于 2009-12-30T09:54:42.317 回答
1

对于文件发送,您可以在此处查看您自己的问题: 机器到机器文件传输 和一些简短的脚本: http://www.eggheadcafe.com/community/aspnet/2/10076226/file-transfer-from-one-ma。 aspx

比,使用 FileInfo 和 DirectoryInfo - 获取属性:http: //msdn.microsoft.com/en-us/library/system.io.directoryinfo%28VS.71%29.aspx

可以使用 DirectorySecurity 连接到远程文件夹:http: //msdn.microsoft.com/en-us/library/system.security.accesscontrol.directorysecurity.aspx

享受!

于 2009-12-30T09:51:32.230 回答
0

查看System.Security.AccessControl.DirectorySecurity类 您可以通过调用获取 DirectorySecurity 对象: System.IO.Directory.GetAccessControl("DIR_NAME") 我不确定这是否可以让您获得远程计算机上目录的信息。

于 2009-12-30T09:42:35.810 回答