Domanda

Requisiti:

Devo copiare una cartella/directory e il suo contenuto situato in una macchina da A alla macchina B correttamente.

Prima di iniziare a copiare i seguenti punti deve essere considerato per il mio requisito.

  1. Se la macchina di destinazione, la cartella di destinazione ha autorizzazioni di accesso o meno per l'utente che deve copiare dalla cartella o directory di origine.

  2. La directory di destinazione non dovrebbe essere nascosta o condivisa e dovrebbe essere vuota se esiste già.

  3. La macchina di destinazione prevede che le credenziali per l'accesso siano di conseguenza

Come ottenere questo?

Non sono in grado di ottenere il codice seguente:

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);
        }
    }
 }
}
È stato utile?

Soluzione

Per l'invio di file puoi vedere la tua domanda qui:Trasferimento di file macchina a macchina E qualche breve sceneggiatura qui:http://www.eggheadcafe.com/community/aspnet/2/10076226/file-transfer-from-one-ma.aspx

Di, usando fileinfo e directoryinfo - ottieni gli attributi:http://msdn.microsoft.com/en-us/library/system.io.directoryinfo%28vs.71%29.aspx

La connessione alla cartella remota può essere eseguita utilizzando DirectorySecurity:http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.directorysecurity.aspx

Divertiti!

Altri suggerimenti

hai tutte queste informazioni in DirectoryInfo del tuo DirectoryInfo dirInfo = new DirectoryInfo(path);

Il tuo frammento di codice non copia davvero i file tra due macchine, invece all'interno della stessa macchina. Il che è ovvio dal tuo metodo principale.

Se si desidera trasferire tra le macchine e anche quella in una posizione non condivisa, probabilmente dovresti controllare le prese.

Se si tratta di una posizione condivisa con le autorizzazioni appropriate impostate, File.Copy farebbe l'aiuto per te.

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top