2009-08-12 13 views
4

Je suis en train de copier l'arborescence complète du dossier partagé du serveur vers ma machine locale, j'ai trouvé Best way to copy the entire contents of a directory in C# post et je décide de l'utiliser mais comme DirectoryInfo ne supporte pas les partages réseau, comment puis-je changer ce code pour travailler avec des partages réseau en tant que source?copier le répertoire partagé entier du réseau

public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo target) { 
    foreach (DirectoryInfo dir in source.GetDirectories()) 
     CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name)); 
    foreach (FileInfo file in source.GetFiles()) 
     file.CopyTo(Path.Combine(target.FullName, file.Name)); 
} 

EDIT
et l'appel est

CopyFilesRecursively(new DirectoryInfo ("\\192.168.0.11\Share"), new DirectoryInfo ("D:\Projects\")); 

et d'obtenir un message d'erreur

Could not find a part of the path 'D:\192.168.0.11\Share'. 

Merci beaucoup!

Répondre

3

Qu'en est-il de l'échappement des chaînes?

CopyFilesRecursively(
    new DirectoryInfo(@"\\192.168.0.11\Share"), 
    new DirectoryInfo(@"D:\Projects\")); 

MSDN dit que DirectoryInfo can handle UNC paths

+0

merci pour le partage! celui-ci fonctionne pour moi! –

0

pouvez-vous passer dans la fonction le chemin d'accès unc du dossier à la place? \\servername\physical path to folder?

0

S'il ne prend pas en charge le chemin UNC, vous pouvez mapper le partage réseau sur une lettre de lecteur. Pas très portable si vous avez besoin de le faire pour un partage spécifié par l'utilisateur; mais fonctionnerait si vous avez seulement besoin de vous concentrer sur une action.

sur XP: Poste de travail -> Outils -> Connecter un lecteur réseau

1

Aussi, essayez:

DirectoryInfo di=new DirectoryInfo(@"\\<server>\<share>"); 

Point spécifique étant le symbole @; Cela fonctionne sur mon réseau local.

Questions connexes