java.io.IOException : Permission denied on network folder 异常

标签 java io networkstream

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

权限被拒绝 java.io.IOException:权限被拒绝 在 java.io.UnixFileSystem.createFileExclusively( native 方法) 在 java.io.File.createNewFile(File.java:850)

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

我在网上找不到关于异常的任何解释。由于我对 java 不是很有经验,所以我想了解为什么会出现此错误。我以错误的方式使用它吗?这是图书馆的错误吗?我想传递一些参数吗? 如前所述,我已经使用普通输出流解决了这个问题,这是一个提高我对 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.io.File.createNewFile() 实际上需要“Change Permissions”权限(您可以在检查文件夹权限时在 Security->Advanced 下找到此条目)。如果没有这个,它将创建文件,然后随后抛出 IOException。

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

关于java.io.IOException : Permission denied on network folder 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4944114/

相关文章:

android - 处理断开的网络连接的最佳策略?

java - 如何读取 jedis 中键的 json 值?

java - 处理 JSP page/WEB-INF/views/ViewPage.jsp 第 130 行时发生异常

javascript - 关于node.js内部异步I/O机制的困惑

java - 不同进程读写文件 "simultaneously"

.net - 如何将TCPClient和NetworkStream移植到Silverlight?

c# - 为什么从 NetworkStream 加载 XML 时服务器会阻塞?

java - 自动生成表格、工作流程

java validate() 方法不能正常工作

c - 将用户输入的字符串写入 C 文件