2010-08-23 6 views
2

Je suis d'accès au fichier de l'application java, mais im faire exception suivante(Accès Refusé) Accès refusé exception

 
c:\Program Files\sample\sample\cample.xml (Acc?s refus?)   
at java.io.FileOutputStream.(Unknown Source) 
at java.io.FileOutputStream. 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source)  
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

est tout organisme une idée pourquoi cette exception a eu lieu ....., solution pour cela. .... est-il lié à la permission du fichier signifie que le fichier n'a pas le droit de lecture.

+0

* "fichier ont pas lu la permission." * >> qui serait * * écrire la permission, parce qu'un 'FileOutputStream' signifie: sortie, par conséquent, l'écriture. – Abel

Répondre

1

Cette exception signifie que le compte sous lequel vous exécutez votre application ne dispose pas d'autorisations d'écriture sur le fichier. Vous devrez accorder les autorisations nécessaires au fichier dans lequel vous essayez d'écrire. Une autre option consiste à mettre le fichier dans un autre dossier où vous avez les autorisations nécessaires.

+0

Ou dans le répertoire, afin de créer le fichier. Êtes-vous sûr de vouloir "cample.xml" (pas "sample.xml")? – Thilo

+0

Si l'utilisateur a créé un fichier à cet emplacement, alors il est correct que nous déplaçons ce fichier par programmation vers un autre emplacement comme temp,% APPDATA%. – raji

+0

@raji: un utilisateur ne peut pas créer un fichier à cet endroit, car il reçoit «Accès Refusé». Mais quand l'erreur se produit, vous pouvez suggérer à l'utilisateur un autre emplacement (comme '% APPDATA%' en effet, voir aussi mon point de vue sur le problème). – Abel

2

Avec ma connaissance limitée du français, je pense que "Acc? S refuse?" est, sur votre système, "Accès refusé?" ou quelque chose de similaire. Ce qui signifie: "accès refusé". En d'autres termes, votre programme Java n'est pas autorisé à aller à l'endroit que vous mentionnez. Étant donné que l'emplacement est sous c:\program files, cet emplacement est en effet interdit pour Windows Vista et versions ultérieures. Il est préférable de choisir un emplacement sous %APPDATA% ou ailleurs où vous avez un accès en écriture.

Notez que Windows tente d'empêcher l'écriture dans des emplacements sensibles pour des raisons de sécurité. Même si vous gagnez le droit en changeant votre compte à l'administrateur, vous ne devriez toujours pas mettre les données, les paramètres, les fichiers etc. sous Program Files. Au lieu de cela, il devrait passer sous le répertoire de données de l'utilisateur actuel ou de l'utilisateur par défaut. En Java, vous pouvez get this path as follows:

// get application path 
System.getenv("APPDATA"); 
+0

L'emplacement "Program Files" pourrait en effet être le problème. J'ai une fois fait l'erreur d'installer un serveur web Apache ci-dessous "Program Files". Depuis lors, c'est toujours un défi d'appliquer des changements à 'httpd.conf', même avec un simple éditeur de texte ... –

+0

@Andreas_D: deux astuces sur Apache sous Windows: (1) faites un clic droit sur votre éditeur (même Bloc-notes) et sélectionnez * Exécuter en tant qu'administrateur *, (2) changer l'emplacement de 'httpd.conf' (doit être fait dans le registre ou le fichier batch pour la ligne de commande). J'utilise ce dernier à beaucoup de satisfaction (jamais aimé httpd.conf à côté de l'exécutable de toute façon). – Abel