Java – Toegang geweigerd java.io.FileNotFoundException

Ik heb de volgende code:

List<FileItem> items = uploadHandler.parseRequest(request);
for (FileItem item : items) {
    if (!item.isFormField()) {
        File file = new File("D:/Data");
    }
}

Als ik een bestand probeer op te slaan, krijg ik de volgende foutmelding

java.io.FileNotFoundException: D:\Data (Access is denied.)

Wat kan de reden zijn en hoe kan ik dit oplossen? Ik heb lees- en schrijfrechten voor deze map.


Antwoord 1, autoriteit 100%

Als je een nieuw Fileaanmaakt, moet je de bestandsnaam opgeven, niet alleen de map waarin je je bestand wilt plaatsen.

Probeer iets als

File file = new File("D:/Data/" + item.getFileName());

Antwoord 2, autoriteit 24%

Niet helemaal het geval bij deze vraag, maar kan nuttig zijn.
Ik kreeg deze uitzondering toen ik mkdirs() aanroep op een nieuw bestand in plaats van op het bovenliggende bestand

File file = new java.io.File(path);
//file.mkdirs(); // wrong! 
file.getParentFile().mkdirs(); // correct!
if (!file.exists()) {
    file.createNewFile();
} 

Antwoord 3, autoriteit 8%

Ik heb naar dit probleem gezocht en kreeg de volgende antwoorden:

  1. "C:\Program Files\Apache-tomcat-7.0.69\"
    verwijder de extra backslash (\)
  2. Klik met de rechtermuisknop op de logmap in de map Tomcat en geef deze map in het tabblad Beveiliging een schrijfmachtiging en start de net-beans opnieuw op als een run als administrator.

Uw probleem zal worden opgelost


Antwoord 4, autoriteit 6%

U moet toestemming voor de gebruikersinstellingen instellen.

  1. Ga naar C:\Program Files\
  2. Klik met de rechtermuisknop op de java-map, klik op eigenschappen. Selecteer het tabblad Beveiliging.
  3. Klik daar op de knop “Bewerken”, waardoor het venster MACHTIGINGEN VOOR JAVA verschijnt.
  4. Klik op Toevoegen, waarna een nieuw venster verschijnt. Daarin, in het vak “Voer objectnaam in”, voer uw gebruikersaccountnaam in en klik op
    oke (als deze al bestaat, sla deze stap dan over).
  5. In het venster “MACHTIGINGEN VAN JAVA” ziet u verschillende klikbare
    opties zoals CREATOR EIGENAAR, SYSTEEM, waaronder uw
    gebruikersnaam. Klik erop en vink de optie VOLLEDIGE CONTROLE aan in
    Rechten voor subvenster.
  6. Tot slot, druk op toepassen en oké.

Antwoord 5, autoriteit 5%

Zorg ervoor dat de map bestaat, dat u toestemming hebt om deze te openen en voeg het bestand toe aan het pad om het logboek te schrijven:

File file = new File("D:/Data/" + item.getFileName());

Other episodes