4

Ich versuche, ein FileInputStream-Objekt mithilfe eines File-Objekts zu initialisieren. Ich erhalte einen FileNotFound Fehler auf der LinieGet FileNotFoundException beim Initialisieren von FileInputStream mit Dateiobjekt

fis = new FileInputStream(file); 

Das ist seltsam, da ich diese Datei durch die gleiche Methode geöffnet haben regex oft zu tun.

Meine Methode ist wie folgt:

private BufferedInputStream fileToBIS(File file){ 

    FileInputStream fis = null; 
    BufferedInputStream bis =null; 
    try { 
     fis = new FileInputStream(file); 
     bis = new BufferedInputStream(fis); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return bis; 
} 

java.io.FileNotFoundException: C: \ dev \ server \ tomcat6 \ webapps \ sample-Website (Zugriff verweigert)
        bei java .io.FileInputStream.open (native Methode)
        bei java.io.FileInputStream. (Unknown Source)
        bei java.io.FileInputStream. (Unknown Source)
        bei controller.ScanEditRegions.fileToBIS (ScanEditRegions.java:52)
        bei controller.ScanEditRegions.tidyHTML (ScanEditRegions.java:38 )
        bei controller.ScanEditRegions.process (ScanEditRegions.java:64)
        bei controller.ScanEditRegions. visitAllDirsAndFiles (ScanEditRegions.java:148)
        bei controller.Manager.main (Manager.java:10)

+0

Ist die Datei dort, haben Sie Berechtigungsprobleme? –

Antwort

9

Gemessen an der stacktrace Sie klebte in Ihrem Beitrag ich, dass Sie sich vorstellen würde Habe keine Rechte, die Datei zu lesen.

Die File-Klasse ermöglicht Ihnen, nützliche Kontrollen auf einer Datei ausführt, einige von ihnen:

boolean canExecute(); 
boolean canRead(); 
boolean canWrite(); 
boolean exists(); 
boolean isFile(); 
boolean isDirectory(); 

Zum Beispiel könnten Sie überprüfen: exists() & & isFile() & & canRead() und Drucken Sie eine bessere Fehlermeldung, je nachdem, warum Sie die Datei nicht lesen können.

+0

Das Problem war ein Verzeichnis wurde übergeben (sowie viele Dateien) – Ankur

+0

gleichen Prob auch ich fand und mein Fehler ist 02-10 14: 18: 25.367: W/System.err (365): java.io.FileNotFoundException: /storage/emulate/0/bhanuдо_свидания.txt: Öffnen fehlgeschlagen: ENOENT (Keine solche Datei oder Verzeichnis) 02-10 14: 18: 25.367: W/System.err (365) : \t bei libcore.io.IoBridge.open (IoBridge.java:409) 02-10 14: 18: 25.367: W/System.err (365): \t bei java.io.FileInputStream. (FileInputStream.java:78) –

3

Dies ist hat mit Dateiberechtigungen Einstellungen im Betriebssystem zu tun. Sie haben den Java-Prozess als Benutzer gestartet, der keine Zugriffsrechte für das bestimmte Verzeichnis hat.

3

Sie könnten sicherstellen möchten, dass (in der Reihenfolge der Wahrscheinlichkeit-Haube):

  1. Die Datei existiert.
  2. Die Datei ist kein Verzeichnis.
  3. Sie oder der Java-Prozess sind berechtigt, die Datei zu öffnen.
  4. Ein anderer Prozess hat keine Sperre für die Datei (wahrscheinlich, wie Sie wahrscheinlich eine Standard IOException statt FileNotFoundException erhalten würde)
+0

gleichen Prob auch ich fand und mein Fehler ist 02-10 14: 18: 25.367: W/System.err (365): java.io.FileNotFoundException: /storage/emulate/0/bhanude_svidanjia.txt: Öffnen fehlgeschlagen: ENOENT (Keine solche Datei oder Verzeichnis) 02-10 14: 18: 25.367: W/System.err (365): bei libcore.io.IoBridge.open (IoBridge.java:409) 02-10 14: 18: 25.367: W/System.err (365): bei java.io.FileInputStream. (FileInputStream.java:78) –

-1

Ich denke, Sie führen die Anweisung von Eclipse oder eine Java-IDE und Zieldatei ist auch im IDE-Arbeitsbereich vorhanden. Sie erhalten den Fehler, da Eclipse die Zieldatei im selben Arbeitsbereich nicht lesen kann. Sie können Ihren Code über die Eingabeaufforderung ausführen. Es sollte keine Ausnahme machen.

+0

Das ursprüngliche Poster hat bereits eine Antwort akzeptiert und die Ursache seines Problems erklärt - er übermittelte einen Verzeichnispfad und nicht einen Dateipfad. Bitte überprüfen Sie, was andere geschrieben haben, bevor Sie eine historische Frage beantworten. –