Domanda

Sto cercando di inizializzare un oggetto FileInputStream utilizzando un oggetto File. Sto ottenendo un errore di FileNotFound sulla linea

fis = new FileInputStream(file);

Questo è strano dal momento che ho aperto questo file attraverso lo stesso metodo per fare regex molte volte.

Il mio metodo è il seguente:

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 \ campione in loco (Accesso negato)
a java.io.FileInputStream.open (metodo natale)     
a java.io.FileInputStream. (fonte sconosciuta)     
a java.io.FileInputStream. (fonte sconosciuta)     
a controller.ScanEditRegions.fileToBIS (ScanEditRegions.java:52)     
a controller.ScanEditRegions.tidyHTML (ScanEditRegions.java:38)     
a controller.ScanEditRegions.process (ScanEditRegions.java:64)     
a controller.ScanEditRegions.visitAllDirsAndFiles (ScanEditRegions.java:148)     
a controller.Manager.main (Manager.java:10)

È stato utile?

Soluzione

A giudicare dal stacktrace è stato incollato nel tuo post direi che non si dispone dei diritti per leggere il file.

La classe File permette di esegue i controlli utili su un file, alcuni di loro:

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

Ad esempio, si potrebbe verificare la presenza di:. Esiste () && isFile () && CanRead () e stampare una migliore errore di messaggio a seconda del motivo per cui non puoi leggere il file

Altri suggerimenti

Questa è ha a che fare con le impostazioni delle autorizzazioni dei file nel sistema operativo. Hai iniziato il processo di Java come un utente che non ha diritti di accesso alla directory specifica.

Si potrebbe desiderare di fare in modo che (in ordine di probabilità-cappa):

  1. Il file esiste.
  2. Il file non è una directory.
  3. o il processo di Java si dispone delle autorizzazioni per aprire il file.
  4. Un altro processo non ha un blocco sul file (probabilmente, come si sarebbe probabilmente riceverà un IOException standard invece di FileNotFoundException)

Credo che si sta eseguendo la dichiarazione da Eclipse o qualsiasi Java IDE e file di destinazione è presente anche in IDE di lavoro. Hai trovato l'errore come Eclipse non posso leggere il file di destinazione nella stessa area di lavoro. È possibile eseguire il codice da prompt dei comandi. Non dovrebbe attraverso qualsiasi eccezione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top