2010-08-23 220 views
2

我M个接入从Java应用程序文件,但即时得到以下异常(ACCES拒绝)拒绝访问异常

 
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) 

是任何机构有任何想法,为什么这个异常发生这个......,解决方案。 ... 它与文件许可手段文件有没有读取权限有关。

+0

* “文件没有读取权限。” * >>这将是*写*许可,因为'FileOutputStream'指:输出,因此,写作。 – Abel 2010-08-23 06:23:19

回答

1

此例外意味着您正在运行您的应用程序的帐户对该文件没有写入权限。您将需要为您正在尝试写入的文件授予必要的权限。另一种选择是将该文件放入另一个文件夹,在该文件夹中您具有必要的权限。

+0

或者到目录,为了创建文件。你确定要“cample.xml”(不是“sample.xml”)吗? – Thilo 2010-08-23 06:15:08

+0

如果用户在这个位置创建了一个文件,那么我们将该文件编程移动到另一个位置,如temp,%APPDATA%,这是否正确。 – raji 2010-08-23 07:45:55

+0

@raji:用户无法在该位置创建文件,因为他收到了“AccèsRefusé”。但是当错误发生时,您可以向用户建议另一个位置(例如'%APPDATA%'的确如此,另请参阅我对此问题的看法)。 – Abel 2010-08-23 07:54:12

2

由于我对法语的知识有限,我认为“Acc?s拒绝?”在你的系统上,“Accèsrefusé?”或类似的东西。这意味着:“拒绝访问”。换句话说,你的Java程序不允许去你提到的位置。

考虑到位置在c:\program files以下,Windows Vista及更高版本确实禁止该位置。最好在%APPDATA%或其他您有写入权限的地方选择一个位置。

请注意,由于安全原因,Windows会尝试防止写入微妙的位置。即使您通过将帐户更改为管理员而获得了正确的权利,您仍然不应将数据,设置,文件等放在Program Files下。相反,它应该在当前用户或默认用户的应用程序数据目录下。在Java中,你可以get this path as follows

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

“程序文件”的位置确实可能是问题所在。我曾经犯过在“Program Files”下安装apache web服务器的错误。从那以后,即使使用一个简单的文本编辑器,它总是会给应用到'httpd.conf'的变更带来挑战... – 2010-08-23 06:23:45

+0

@Andreas_D:Windows上的两个提示:(1)右键点击你的编辑器(甚至记事本)并选择*以管理员身份运行*,(2)更改'httpd.conf'的位置(必须在注册表或命令行的批处理文件中完成)。我使用后者非常满意(从来不喜欢可执行文件旁边的httpd.conf)。 – Abel 2010-08-23 06:36:13