views:

3362

answers:

4

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

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

+1  A: 

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

David Rabinowitz
The call fails on FileInputStream, so unless java tries to open with write permission even though a FileInputStream will only read data, it seems unlikely that this particular call will fail because the file is read-only/already has a write handle open on it.
GRB
no i have given full access to everyone user as well as the loggedin user but still cannot access the file
Abdul Khaliq
A: 

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.

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
Tommy
Annoying or not, switching Security features off and continue to do everything as Administrator as we used to "in the dark ages" does not seem like a valuable suggestion. With tips like this in developers' minds we will never get forward making systems more secure. Security is often inconvenient, but the same could be said about seatbelts...
Daniel Schneller
Why would this have anything to do with Microsoft Windows UAC (in general) or Vista (specifically)? Neither the question nor the code stack trace appear to give any indication of the underlying operating system.
Danny Whitt
Sorry, the questioner does say "vista" (sic.).
Danny Whitt
+1  A: 

Try these:

  • Ensure the same user can read the file as is running the application.
  • Print out the path to the file and make sure the file exists at that path.
  • Print out the exception's cause (use getCause()), if one exists.
  • at rtran.dao.CustomerDAO.insertCustomer(CustomerDAO.java:29) inserts indicate writing, not reading.
  • Make sure no other application has the file open (should not be a problem).
  • Copy the file to a different location, does the new location have problems?
  • Write a simple test application that reads the file.
Dave Jarvis
A: 

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.

Szundi