53

我有以下代码:

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.)

可能是什么原因,我该如何解决?我确实有这个文件夹的读写权限。

4

5 回答 5

96

创建新的File时,您应该提供文件名,而不仅仅是要放置文件的目录。

尝试类似的东西

File file = new File("D:/Data/" + item.getFileName());
于 2013-10-24T09:05:00.767 回答
21

不完全是这个问题的情况,但可能会有所帮助。当我在新文件而不是其父文件上调用 mkdirs() 时出现此异常

File file = new java.io.File(path);
//file.mkdirs(); // wrong! 
file.getParentFile().mkdirs(); // correct!
if (!file.exists()) {
    file.createNewFile();
} 
于 2014-12-14T18:06:12.237 回答
7

我已经搜索了这个问题,我得到了以下答案:

  1. "C:\Program Files\Apache-tomcat-7.0.69\" 删除多余的反斜杠 ( \)
  2. 右键单击tomcat文件夹中的日志文件夹,并在安全选项卡中将此文件夹作为写权限,然后以管理员身份重新启动net-beans。

你的问题将得到解决

于 2016-05-18T17:48:27.703 回答
5

您需要为用户控件设置权限。

  1. 转到 C:\Program 文件\
  2. 右键单击java文件夹,单击属性。选择安全选项卡。
  3. 在那里,单击“编辑”按钮,这将弹出 JAVA 权限窗口。
  4. 单击添加,这将弹出一个新窗口。在那,在“输入对象名称”框中,输入您的用户帐户名称,然后单击确定(如果已经存在,请跳过此步骤)。
  5. 现在在“JAVA 权限”窗口中,您将看到几个可点击的选项,例如 CREATOR OWNER、SYSTEM,其中包括您的用户名。单击它,然后在子窗口的权限中选中完全控制选项。
  6. 最后,点击应用就可以了。
于 2015-02-24T07:06:59.160 回答
4

确保目录存在,您有权访问它并将文件添加到路径以写入日志:

File file = new File("D:/Data/" + item.getFileName());
于 2016-05-18T18:03:04.990 回答