Pregunta

Requisito:

Necesito copiar una carpeta/directorio y su contenido ubicado en una máquina A a la máquina B con éxito.

Antes de comenzar a copiar los siguientes puntos, debe considerarse para mi requisito.

  1. Si la máquina de destino, la carpeta de destino tiene permisos de acceso o no para el usuario que necesita copiar en la carpeta o directorio de origen.

  2. El directorio de destino no debe estar oculto o compartido y debe estar vacío si ya existe.

  3. La máquina de destino espera que las credenciales para el acceso, manejen la misma en consecuencia.

¿Cómo lograr esto?

No puedo lograr con el siguiente código:

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);
        }
    }
 }
}
¿Fue útil?

Solución

Para el envío de archivos, puede ver su propia pregunta aquí:Transferencia de archivos de máquina a máquina Y un breve guión aquí:http://www.eggheadcafe.com/community/aspnet/2/10076226/file-transfer-from-one-ma.aspx

Que, usando FileInfo y DirectoryInfo, obtenga los atributos:http://msdn.microsoft.com/en-us/library/system.io.directoryinfo%28vs.71%29.aspx

La conexión a la carpeta remota se puede hacer utilizando DirectorySecurity:http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.directorysecurity.aspx

¡Disfrutar!

Otros consejos

tienes toda esta información en el DirectoryInfo de tu DirectoryInfo dirInfo = new DirectoryInfo(path);

Su fragmento de código realmente no copia archivos entre dos máquinas, sino dentro de la misma máquina. Lo cual es obvio a partir de su método principal.

Si desea transferir entre máquinas y eso también a una ubicación no compartida, probablemente debería revisar los enchufes.

Si se trata de una ubicación compartida con el conjunto de permisos apropiados, entonces File.Copy le haría la ayuda.

Check out the System.Security.AccessControl.DirectorySecurity class You can get the DirectorySecurity object by calling: System.IO.Directory.GetAccessControl("DIR_NAME") I am not sure if this can get you information on a directory on remote machine.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top