Вопрос

Требование:

Мне нужно успешно скопировать папку/каталог и ее содержимое, расположенное в машине 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);
        }
    }
 }
}
Это было полезно?

Решение

Для отправки файла вы можете увидеть свой собственный вопрос здесь:Передача файла машины в машину И немного короткого сценария здесь:http://www.eggheadcafe.com/community/aspnet/2/10076226/file-transfer-from-ony-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

Наслаждаться!

Другие советы

у вас есть вся эта информация в DirectoryInfo вашей DirectoryInfo dirInfo = new DirectoryInfo(path);

Ваш фрагмент кода на самом деле не копирует файлы между двумя машинами, вместо этого в пределах одной и той же машины. Что очевидно из вашего основного метода.

Если вы хотите перенести между машинами, а также в неракрасное местоположение, вам, вероятно, следует проверить гнезда.

Если это общее место с соответствующими наборами разрешений, то File.copy поможет вам.

Проверьте System.security.accessControl.DirectorySecurity Класс Вы можете получить объект DirectorySecurity, вызывая: System.io.directory.getAccessControl ("dir_name") Я не уверен, может ли это получить информацию в каталоге на удаленной машине.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top