Java服务无法列出目录中的文件

我在Stack Overflow中发布了这个问题,有人把我redirect到这里:

大家好。 我正在做一个Java的Windows服务,这项服务列出了一个目录中的文件,并将结果写入一个文件。 我的问题是,当我调用Java.File.isDirectory()时,服务运行它总是结果错误(它运作良好,当我手动运行服务作为任何其他程序)。 此外,如果我尝试以下操作:for(文件F:directorio.listFiles())当我作为服务运行该程序时,会导致exception。 我相信是权限相关的,因为当我将运行服务的帐户更改为我自己的凭据时,它会正确列出文件。 你知道是否有解决方法吗? (更改Windows策略,另一种特殊帐户,另一种方式列出目录的文件,其他任何事情,也许我失踪)。 提前致谢。

感谢你的帮助! 我发现我的问题,我正在阅读configuration文件,我认为是在用户的家里(我的家和系统的家是不一样的…我的错)的path。 不知怎的,我没有意识到,因为我正在使用一个循环类(:S)。 再次非常感谢。

基于File.isDirectory()的文档,听起来您可能已经启用了安全pipe理器。 isDirectory需要启用checkRead权限,您可以使用类似下面的内容(根据需要进行编辑)自行testing:

SecurityManager security = System.getSecurityManager(); if(security) if(security.checkRead(FILE_PATH_HERE)) // we have permission else // no permission 

将目录添加到允许的目录列表可能会或可能不会在您要做的事情列表中。 如果是这样的话,有几十个谷歌链接的说明。 如果您想完全禁用SM,也是一样的。