Java - 访问被拒绝 java.io.FileNotFoundException [重复]
Posted
技术标签:
【中文标题】Java - 访问被拒绝 java.io.FileNotFoundException [重复]【英文标题】:Java - Access is denied java.io.FileNotFoundException [duplicate] 【发布时间】:2013-11-02 21:24:36 【问题描述】:我有以下代码:
List<FileItem> items = uploadHandler.parseRequest(request);
for (FileItem item : items)
if (!item.isFormField())
File file = new File("D:/Data");
当我尝试保存文件时,出现以下错误
java.io.FileNotFoundException: D:\Data (Access is denied.)
可能是什么原因,我该如何解决?我确实有这个文件夹的读写权限。
【问题讨论】:
查看目录是否存在于“D:/Data” 我猜这是因为您尝试在for
循环的每次迭代中打开同一个文件。
很难说没有看到实际保存文件的代码,或者没有编译和重现问题的代码,但我猜可能文件已经存在(或者目录存在姓名)?另外请注意,Windows 上的文件不区分大小写。
你应该使用 File.separatorChar 来使你的代码符合标准,而不是使用 '/' 或 '\'。
以上代码中没有一行可以抛出FilNotFoundException
。异常究竟是在哪里抛出的,它周围的代码是什么?
【参考方案1】:
当您创建一个新的File
时,您应该提供文件名,而不仅仅是您要放置文件的目录。
尝试类似的东西
File file = new File("D:/Data/" + item.getFileName());
【讨论】:
【参考方案2】:不完全是这个问题的情况,但可能会有所帮助。 当我在新文件而不是其父文件上调用 mkdirs() 时出现此异常
File file = new java.io.File(path);
//file.mkdirs(); // wrong!
file.getParentFile().mkdirs(); // correct!
if (!file.exists())
file.createNewFile();
【讨论】:
【参考方案3】:我已经搜索过这个问题,我得到了以下答案:
"C:\Program Files\Apache-tomcat-7.0.69\"
删除多余的反斜杠 (\
)
右键单击tomcat文件夹中的日志文件夹,并在安全选项卡中将此文件夹作为写入权限,然后以管理员身份重新启动net-beans。
你的问题会解决的
【讨论】:
我只需要删除结尾的反斜杠 我应该从哪个地方删除反斜杠?【参考方案4】:您需要为用户控件设置权限。
-
转到 C:\Program Files\
右键单击 java 文件夹,单击属性。选择安全标签。
在此处,单击“编辑”按钮,将弹出“JAVA 权限”窗口。
点击添加,会弹出一个新窗口。在那,在“输入对象名称”框中,输入您的用户帐户名称,然后单击
好的(如果已经存在,请跳过此步骤)。
现在在“JAVA 权限”窗口中,您将看到几个可点击的
CREATOR OWNER、SYSTEM 等选项,其中包括您的
用户名。单击它,然后选中标记 FULL CONTROL 选项
子窗口的权限。
最后,点击应用即可。
【讨论】:
这是更改 Java 可执行文件本身的权限。没有理由这样做。【参考方案5】:确保目录存在,你有权限访问它并将文件添加到写入日志的路径:
File file = new File("D:/Data/" + item.getFileName());
【讨论】:
以上是关于Java - 访问被拒绝 java.io.FileNotFoundException [重复]的主要内容,如果未能解决你的问题,请参考以下文章