我从java应用程序访问文件,但我得到了以下异常
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 :(得分:2)
由于我对法语的了解有限,我认为“Acc?s refus?”在你的系统上,“Accèsrefusé?”或类似的东西。这意味着:“访问被拒绝”。换句话说,您的Java程序不允许转到您提到的位置。
考虑到该位置位于c:\program files
下,Windows Vista及更高版本确实禁止使用此位置。最好在%APPDATA%
或您有书写权限的其他地方选择一个位置。
请注意,出于安全原因,Windows会尝试阻止写入微妙的位置。即使您通过将帐户更改为管理员来获得权利,您仍然不应将数据,设置,文件等放在Program Files下。相反,它应该在当前用户或默认用户的应用程序数据目录下。在Java中,您可以get this path as follows:
// get application path
System.getenv("APPDATA");
答案 1 :(得分:1)
此异常表示您运行应用程序的帐户对该文件没有写入权限。您需要为要写入的文件授予必要的权限。另一种选择是将文件放入另一个您拥有必要权限的文件夹中。