java.io.IOException:对网络文件夹的权限被拒绝

java.io.IOException:对网络文件夹的权限被拒绝,java,io,networkstream,Java,Io,Networkstream,当我试图在unix系统上挂载的窗口文件夹中写入文件时,出现了帖子标题错误。我开发了一个web服务,它在linux操作系统上的Tomcat6中运行,需要在windows网络文件夹中编写。系统管理员已将其安装在Linux服务器上,在其上创建和修改文件没有问题。 当我尝试执行发布的代码时,出现以下异常: 拒绝许可 java.io.IOException:权限被拒绝 位于java.io.UnixFileSystem.createFileExclusive(本机方法) 位于java.io.File.cre

当我试图在unix系统上挂载的窗口文件夹中写入文件时,出现了帖子标题错误。我开发了一个web服务,它在linux操作系统上的Tomcat6中运行,需要在windows网络文件夹中编写。系统管理员已将其安装在Linux服务器上,在其上创建和修改文件没有问题。 当我尝试执行发布的代码时,出现以下异常:

拒绝许可 java.io.IOException:权限被拒绝 位于java.io.UnixFileSystem.createFileExclusive(本机方法) 位于java.io.File.createNewFile(File.java:850)

奇怪的是,它似乎与网络文件夹上的File.createNewFile方法有关,事实上,该服务可以在本地文件系统上写入而不会出现问题,无论是在调试(我用来开发该服务的pc)上,还是在linux服务器上管理员向我提供的tomcat文件夹系统上。该文件已创建,但为空,并且不会打印create方法后面的日志条目。此外,如果我使用普通的outputstream来创建和写入文件,我不会有任何问题

我在网上找不到关于这个异常的任何解释。由于我对java不是很有经验,我想了解为什么会出现这种错误。我用错了吗?这是图书馆的错误吗?我是否错过了传递某些参数? 如上所述,我已经用一个普通的outputstream解决了这个问题,这是一个提高我对java理解的问题

FileOutputStream fos = null; 
try{ 

   log.info(String.format("file length: %s",streamAttach.length)); 
   log.info(String.format("check File : %s",filename)); 
   File f = new File(filename); 
   if(f.exists()) 
    ...                        

   boolean done= f.createNewFile();//here comes the exception
   //nothing of the following happens 
   if(!done) 
       throw new NWSException("error creating file"); 
   log.info(String.format("file %s creato", nomeFile)); 

提前感谢您的回答

这肯定不是Java特有的问题。如果此Unix文件夹映射到windows,请尝试打开文件资源管理器并在此目录中创建文件。我相信你也会被拒绝。在这种情况下,请修复此问题或请您的系统管理员帮助您


祝你好运

我最近遇到这个问题,发现java.io.File.createNewFile()实际上需要“更改权限”权限(在检查文件夹权限时,可以在“安全性”->“高级”下找到此项)。否则,它将创建文件,然后抛出IOException


这具有欺骗性,因为在手动测试时,您仍然可以在文件夹上创建文件,但是如果createNewFile()没有此特定权限(可能会更改其创建的文件的权限),它仍然会失败。

如果您使用的是共享NTFS(CIFS)的Netapp样式文件系统到Unix您可能会遇到“不允许NFS更改NTFS样式安全卷中文件的权限。”(第16页)

这里的选项是更改为unix文件系统,或将用于检查NFS权限错误的文件系统的标志设置为on

java.io.UnixFileSystem.createFileExclusive(本机方法)
使用O_EXCL和0666 umask打开文件,这样我将得到一个EACCES,它实际上是一个NFS3RR\u访问

open("/net/storage01-a/filer/myfile", O_RDWR|O_CREAT|O_EXCL, 0666) Err#13 EACCES

您还可以使用OutputStream创建文件,该文件不使用O_EXCL,它看起来像是linux设备上的许可问题。您尝试过chmod吗?系统管理员说权限正常,他可以在装载的文件夹上创建一个文件并用vi修改它。我不明白的是,为什么文件类方法在fileoutputstream工作时失败,为什么它在“本地文件夹”工作而在装载的文件夹上失败它在共享文件夹上(\\anetworkmachine\myapp\test)在linux服务器上安装为/mntnfs/myapp/test/。我可以打开、创建和修改windows文件夹中的文件。不知道访问挂载文件夹的凭据“更改权限”权限是什么意思?(linux)即使文件夹chmod设置为777,在生成文件后也会抛出该错误。@likeachamp-“更改权限”是NTFS文件/文件夹perm()。它不适用于linux。此问题涉及已装入的Windows文件夹,因此NTFS权限将发挥作用。