2013-10-24 4 views
20

Ich habe den folgenden Code:Zugriff wird verweigert java.io.FileNotFoundException

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

Wenn ich versuche, eine Datei zu speichern, erhalte ich die folgenden Fehler

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

Was könnte der Grund sein und wie kann ich das beheben? Ich habe Lese- und Schreibrechte für diesen Ordner.

+0

sehen, ob Verzeichnis Präsentiert bei "D:/Data" –

+2

Ich würde vermuten, dass es ist, weil Sie versuchen, die gleiche Datei bei jeder Iteration Ihrer For-Schleife zu öffnen. – Francis

+0

Es ist schwierig zu sagen, ohne den Code zu sehen, der die Datei tatsächlich speichert, oder ohne Code, der das Problem kompiliert und reproduziert, aber ich vermute, die Datei existiert bereits (oder existiert ein Verzeichnis mit diesem Namen)? Beachten Sie außerdem, dass bei Windows-Dateien nicht zwischen Groß- und Kleinschreibung unterschieden wird. –

Antwort

44

Wenn Sie neue Datei rufen Sie sollen den Dateinamen geben, nicht nur das Verzeichnis, das Sie in Ihrer Datei setzen wollen.

Versuchen Sie, mit so etwas wie

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

Nicht gerade der Fall Diese Frage kann aber hilfreich sein. Ich habe diese Ausnahme, wenn ich mkdirs() aufrufen, auf neue Datei anstelle der Mutter

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

Sie benötigen eine Berechtigung, Kontrollen für den Benutzer eingestellt werden.

  1. Goto C: \ Programme \
  2. Rechts klicken java-Ordner, klicken Sie auf Eigenschaften. Wählen Sie die Registerkarte Sicherheit.
  3. Dort, klicken Sie auf "Bearbeiten", die Pop-up-Fenster für die Berechtigungen für JAVA erscheint.
  4. Klicken Sie auf Hinzufügen, wodurch ein neues Fenster geöffnet wird. Geben Sie in das Feld "Objektnamen eingeben" den Namen Ihres Benutzerkontos ein und klicken Sie auf OK (falls bereits vorhanden, überspringen Sie diesen Schritt).
  5. Jetzt im Fenster "JAVA-ERLAUBNIS" sehen Sie mehrere anklickbare Optionen wie CREATOR OWNER, SYSTEM, darunter ist Ihr Benutzername. Klicken Sie darauf und markieren Sie die Option FULL CONTROL in Permissions for sub window.
  6. Schließlich, Hit anwenden und in Ordnung.
+0

Dadurch werden die Berechtigungen für die ausführbaren Java-Dateien selbst geändert. Es gibt keinen Grund, dies zu tun. –

3

Ich habe für dieses Problem suchen und ich habe folgende Antworten:

  1. "C:\Program Files\Apache-tomcat-7.0.69\" den zusätzlichen Backslash entfernen (\)
  2. Rechtsklick auf den Protokollordner in tomcat Ordner und in Registerkarte Sicherheit geben diesen Ordner als Schreibberechtigung und starten Sie dann die Net-Beans als Lauf als Administrator neu.

Ihr Problem

3

Stellen Sie sicher gelöst werden, dass das Verzeichnis vorhanden ist, Sie über die Berechtigung für den Zugriff haben und die Datei auf dem Pfad hinzufügen, um das Protokoll zu schreiben:

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