(Accès refusé) 拒绝访问异常
Posted
技术标签:
【中文标题】(Accès refusé) 拒绝访问异常【英文标题】:(Accès refusé) Access Denied exception 【发布时间】:2011-04-02 11:39:42 【问题描述】:我正在从 java 应用程序访问文件,但我得到以下异常
c:\Program Files\sample\sample\cample.xml (Acc?s refus?) 在 java.io.FileOutputStream.(未知来源) 在 java.io.FileOutputStream。 在 java.awt.event.InvocationEvent.dispatch(未知来源) 在 java.awt.EventQueue.dispatchEvent(未知来源) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.run(未知来源)是否有人知道为什么会发生此异常.....,解决方案..... 是否与文件权限有关意味着文件没有读取权限。
【问题讨论】:
"文件没有读取权限。" >> 那将是 write 权限,因为FileOutputStream
表示:输出,因此,写入.
【参考方案1】:
由于我对法语的了解有限,我认为“Acc?s refus?”是,在您的系统上,“Accès refusé?”或类似的东西。这意味着:“访问被拒绝”。也就是说,你的Java程序是不允许去你提到的那个位置的。
考虑到该位置在c:\program files
下,Windows Vista 及更高版本确实禁止该位置。最好选择%APPDATA%
下的位置或您有写入权限的其他位置。
请注意,出于安全原因,Windows 会尝试阻止写入敏感位置。即使您通过将您的帐户更改为管理员来获得权利,您仍然不应将数据、设置、文件等放在 Program Files 下。相反,它应该位于当前用户或默认用户的应用程序数据目录下。在Java中你可以get this path as follows:
// get application path
System.getenv("APPDATA");
【讨论】:
“程序文件”位置确实可能是问题所在。我曾经犯过在“程序文件”下面安装 apache Web 服务器的错误。从那时起,即使使用简单的文本编辑器,对httpd.conf
应用更改总是是一个挑战......
@Andreas_D:关于 Windows 上 Apache 的两个提示:(1) 右键单击您的编辑器(甚至是记事本)并选择 以管理员身份运行,(2) 更改 @987654326 的位置@(必须在注册表或命令行批处理文件中完成)。我非常满意地使用后者(无论如何都不喜欢可执行文件旁边的 httpd.conf)。【参考方案2】:
此异常意味着您运行应用程序的帐户没有对该文件的写入权限。您将需要为您尝试写入的文件授予必要的权限。另一种选择是将文件放入您拥有必要权限的另一个文件夹中。
【讨论】:
或者到目录,以便创建文件。您确定要“cample.xml”(不是“sample.xml”)吗? 如果用户在这个位置创建了一个文件,那么我们以编程方式将该文件移动到另一个位置是否正确,例如 temp、%APPDATA%。 @raji:用户无法在该位置创建文件,因为他收到了Accès Refusé
。但是当错误发生时,您可以向用户建议另一个位置(确实像%APPDATA%
,另请参阅我对这个问题的看法)。以上是关于(Accès refusé) 拒绝访问异常的主要内容,如果未能解决你的问题,请参考以下文章
在 vba 中获取 iframe 的 Contentwindow - 访问被拒绝/权限被拒绝