2015-02-23 25 views
31

Z jakiegoś powodu otrzymuję java.nio.file.AccessDeniedException za każdym razem, gdy próbuję pisać do folderu na moim komputerze za pomocą aplikacji webowej java na Tomcat. Ten folder ma uprawnienia do pełnej kontroli dla wszystkich na moim komputerze (Windows). Czy ktokolwiek wie, dlaczego dostaję ten wyjątek?Uzyskiwanie "java.nio.file.AccessDeniedException" podczas próby zapisu do folderu

Oto mój kod:

public void saveDocument(String name, String siteID, byte doc[]) { 
    try { 
     Path path = Paths.get(rootDirectory + siteID); 
     if (Files.exists(path)) { 
      System.out.println("Exists: " + path.toString()); 
      Files.write(path, doc); 
     } else { 
      System.out.println("DOesn't exist"); 
      throw new Exception("Directory for Site with ID " + siteID + "doesn't exist"); 
     } 
    } catch (FileSystemException e) { 
     System.out.println("Exception: " + e); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     System.out.println("Exception: " + e); 
     e.printStackTrace(); 
    } catch (Exception e) { 
     System.out.println("Exception: " + e); 
     e.printStackTrace(); 
    } 

I tu jest błąd:

Exception: java.nio.file.AccessDeniedException: C:\safesite_documents\site1 java.nio.file.AccessDeniedException: C:\safesite_documents\site1 at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83) at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230) at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:430) at java.nio.file.Files.newOutputStream(Files.java:172) at java.nio.file.Files.write(Files.java:3092)

Możliwy powód: See my post on supersuser about how I can't uncheck 'Read Only' for any of my folders on windows 7. Even though all the folders aren't read only to anything but java.

+0

spróbować napisać do folderu w innym napędzie i sprawdzić. – Prashant

+1

Nie działa z innym dyskiem lub innym folderem Jedno może być to, że wszystkie moje foldery na moim komputerze są oznaczone jako "Tylko do odczytu". Tylko gdy je odznaczam, po ponownym sprawdzeniu, po prostu zostaną ponownie sprawdzone po: – OneTwo

+0

@OneTwo, Czy jest jakaś możliwość, że ta sama ścieżka jest używana przez jakikolwiek inny kod.Jak tam, gdzie masz dostęp do tej samej ścieżki i zapomnij zwolnić zasoby: – Amogh

Odpowiedz

39

Ok okazuje się, że robię coś głupiego. Nie dodałem nowej nazwy pliku do ścieżki. miałem „rootDirectory = "C: \ safesite_documents", ale to powinna być„rootDirectory = "C:.. \ Safesite_documents \ newFile.jpg"

Niestety to był głupi błąd jak zawsze

+12

Nie czuj się sam, zrobiłem dokładnie to samo! Dziękuję za odpowiedź. – Yster

+2

Ten sam błąd :), dziękuję – Anarki