2

我正在从 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(未知来源)

是否有人知道为什么会发生此异常.....,对此的解决方案.....是否与文件权限有关意味着文件没有读取权限。

4

2 回答 2

2

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

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

请注意,出于安全原因,Windows 会尝试阻止写入敏感位置。即使您通过将帐户更改为管理员来获得权利,您仍然不应将数据、设置、文件等放在 Program Files 下。相反,它应该位于当前用户或默认用户的应用程序数据目录下。在 Java 中,您可以按如下方式获取此路径

// get application path
System.getenv("APPDATA");
于 2010-08-23T06:15:11.310 回答
1

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

于 2010-08-23T06:13:41.940 回答