java.io.FileNotFoundException:(权限被拒绝)

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1301577/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 08:00:03  来源:igfitidea点击:

java.io.FileNotFoundException: (Permission denied)

javawindows-vistafile-permissions

提问by Abdul Khaliq

i am tying to read a file placed in my documents folder on vista. The fiel does exists on a specified location but still i am getting the following error when trying to open an input stream to the file

我想读取放置在 vista 上我的文档文件夹中的文件。该字段确实存在于指定位置,但在尝试打开文件的输入流时仍然出现以下错误

java.io.FileNotFoundException:  (Permission denied)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at rtran.dao.CustomerDAO.insertCustomer(CustomerDAO.java:29)
        at rtran.action.AddCustomerAction.execute(AddCustomerAction.java:22)
        at rtran.controller.Controller.actionPerformed(Controller.java:85)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Any ideas on how to resolve this??

关于如何解决这个问题的任何想法?

Abdul Khaliq

阿卜杜勒·哈利克

回答by David Rabinowitz

Is it possible you are trying to write to a read only file? From the stack trace you are invoking an insert method.

您是否可能正在尝试写入只读文件?从堆栈跟踪中,您正在调用插入方法。

Also, do you have permissions to access the file? I mean read permissions on the file itself as well as on its parent directory (and its parent and so on).

另外,您是否有权访问该文件?我的意思是对文件本身及其父目录(及其父目录等)的读取权限。

回答by Tommy

Seems like the java-process lacks permission to read the file. You're problaby running with UAC and all that other annoying stuff MS put into Vista.

似乎 java 进程缺乏读取文件的权限。您可能正在使用 UAC 以及 MS 放入 Vista 的所有其他烦人的东西。

I'd do the following:

我会做以下事情:

  • Check the files permissions.
  • Run the java-code with "Run as administrator"-option
  • Turn off UAC and always run everything with admin-rights
  • 检查文件权限。
  • 使用“以管理员身份运行”选项运行 java 代码
  • 关闭 UAC 并始终以管理员权限运行所有内容

回答by Szundi

From 1.6.0_14 java does something other way than 1.6.0_13 handling virtual paths (symlinks) and windows vista uses them heavily on program files and documents and settings. Maybe this is your problem.

从 1.6.0_14 开始,java 做了一些不同于 1.6.0_13 处理虚拟路径(符号链接)的方法,windows vista 在程序文件、文档和设置上大量使用它们。也许这是你的问题。