2009-04-03 7 views
2

Je suis en train de déplacer un fichier du serveur \\abc\\C$\\temp\\coll.zip à un autre serveur \\def\\c$\\temp. J'essaie d'utiliser File.Copy(source,destination). Mais je reçois l'erreur dans le chemin d'accès source en disant: Couldn't find the part of the path.déplacer fichier zip en utilisant fichier.copy()

Je ne suis pas sûr de ce qui ne va pas avec le chemin source.

+0

Pourriez-vous vous inclure un code? Peut-être que vous n'échappez pas aux barres obliques inversées – Keltex

Répondre

5

Vous pouvez utiliser un C# @ Verbatim et également utiliser des contrôles dans le code comme ceci:

string source = @"\\abc\C$\temp\coll.zip"; 
string destination = @"\\def\c$\temp\coll.zip"; 
string destDirectory = Path.GetDirectoryName(destination) 
if (File.Exists(source) && Directory.Exists(destDirectory)) { 
    File.Copy(source, destination); 
} 
else { 
    // Throw error or alert 
} 
+0

Cela ne serait pas valide si le fichier n'existait pas déjà sur l'emplacement cible. Vous devrez utiliser Directory.Exists (destination) pour valider. –

+0

J'étais un peu rapide, merci de le signaler. –

3

ressemble vous avez besoin de deux anti-slash au début:

  • \\ abc \ C $ \ temp \ coll.zip
  • \\ def \ c $ \ temp
5

Marque Assurez-vous que vos caractères "\" sont échappés si vous utilisez C#. Vous devez doubler les antislashs ou préfixe la chaîne littérale avec @, comme ceci:

string fileName = @"\\abc\C$\temp\coll.zip";

ou

string fileName = "\\\\abc\\C$\\temp\\coll.zip";

+0

Je suspecte fortement que le premier antislash soit doublé, par ex. @ "\\ abc \ C $ \ ..." –

+0

Droite Jon, il a été supprimé lorsque quelqu'un a reformaté le message. –

+0

Il y a du funky qui s'échappe dans l'éditeur SO. –

0

Il pourrait être la chaîne que vous utilisez pour le chemin. Si c'est exactement comme vous l'avez indiqué ici, je crois que vous avez besoin de doubles antislashs. "\\" avant le nom du serveur.

0

J'utilise toujours des partages réseau pour ce type de travail, mais les chemins UNC doivent également être disponibles. N'oubliez pas que vous avez besoin d'échapper votre chaîne lorsque vous utilisez \ 's. En outre, les chemins UNC la plupart du temps commencent par un double.

Exemple:

\\MyComputerName\C$\temp\temp.zip 
0

En fait, je manqué @ avant que les deux sources strings.The et le chemin de destination. C'est pourquoi il donnait une erreur.

2

Assurez-vous que vous utilisez un chemin UNC valide. Les chemins UNC devraient commencer par \ non seulement. Vous devriez également envisager d'utiliser System.IO.File.Exists (filename); avant d'essayer la copie afin que vous puissiez éviter l'exception tout à fait et ainsi votre application peut gérer le fichier manquant gracieusement.

Hope this helps

Questions connexes