2015-12-01 1 views
-1

Je dois copier un fichier d'une machine Windows à une autre (la cible est une machine virtuelle). Lorsque je l'exécute en tant qu'utilisateur normal, le fichier est copié avec succès et: Fichier f = nouveau Fichier (source); System.out.println (f.exists());java: Copie d'un fichier d'une machine à une autre java.nio.file.NoSuchFileException

sorties true.
Lorsque j'ouvre un cmd en tant qu'administrateur et que j'exécute le même programme, ce code retourne false`. Et lorsque vous essayez

java.nio.files.Files.copy(source, target, options); 

Je reçois l'exception suivante java.nio.file.NoSuchFileException ... , ce qui est dans le cas, lorsque le dossier sur la machine distante, où le fichier est, est associé à un lecteur, comme

source = "N:\\..." 

Quelqu'un a-t-il une idée de la raison? (ou a respectueusement une solution)?

+1

corriger votre grammaire et le format de votre s'il vous plaît code. – djechlin

+0

Collez le code complet. Pour un, vous ne pouvez pas passer un argument 'File' à' Files.copy() '. – fge

Répondre

0

1 pas le même système

2 pas le même lecteur

3 pas exactement les mêmes chemins

4 vous ne lancement du même chemin

Une façon de fixer: avant lire un fichier, en écrire un autre, et vérifier où il est écrit dans votre système de fichiers

2

Votre problème n'a rien à voir avec java, il est lié à h ow windows gère les lecteurs réseau mappés sous différents niveaux de privilèges.

Pour être précis: les mappages de lecteur réseau sont perdus lors du passage à un niveau d'utilisateur élevé.

Pour le réparer, vous devez activer les connexions liées pour les lecteurs réseau. Lorsque vous exécutez Windows 7: Dans l'éditeur de registre, créez un DWORD avec ensuite le nom EnableLinkedConnections de valeur 1 sous HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System.

Une explication détaillée peut être trouvée ici: http://www.winability.com/how-to-make-elevated-programs-recognize-network-drives/