Domanda

FileNotFoundException si butta su tutti i tipi di occasioni - non necessariamente solo quando il nome del file non è valido, ma anche quando e. g. permessi non permettono un file da creare o leggere:

java.io.FileNotFoundException: \\server\share\directory\test.csv (Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
    at java.io.FileWriter.<init>(FileWriter.java:73)

L'esempio sopra mostra un Windows tedesca lamentano nome utente o password non validi.

C'è un modo breve di analisi del messaggio eccezioni per ottenere un po 'più sofistica informazioni su perché esattamente è verificata l'eccezione? Problema con il messaggio di analisi è che in diversi locali i messaggi varieranno.

È stato utile?

Soluzione

Fare l'assegno per il file esistenza / lettura-scrittura di autorizzazioni da soli prima di creare FileOutputStream.

File test_csv = new File( "\\server\share\directory\test.csv" );

if ( test_csv.exists( ) && test_csv.canWrite( ) )
{
  // Create file writer
  ...
}
else
{
  // notify user
  ...
}

Si noti che a volte si dovrà controllare i permessi di lettura / scrittura su un genitore di file di destinazione che, se è necessario creare un nuovo file.

File test_csv = new File( "\\server\share\directory\test.csv" );
File parent_dir = test_csv.getParentFile( )

if ( parent_dir.exists( ) && parent_dir.canWrite( ) )
{
  // Create file writer
  ...
}
else
{
  // notify user
  ...
}

Altri suggerimenti

Si consiglia di esaminare le proprietà del file utilizzando il java.io.File oggetto prima di tentare di leggere il file. C'è un metodo CanRead su che è possibile utilizzare per determinare se l'utente può leggere il file.

Un approccio è quello di esaminare il tipo effettivo di eccezione: come si può vedere dalla docs , ci sono un sacco di sottoclassi che forniscono informazioni più dettagliato.

Tuttavia, probabilmente non sarà possibile ottenere lontano con quello. Come la maggior parte controllato eccezioni, di solito è meglio effettuare il login / segnalare l'eccezione e chiedere all'utente per le scelte su come correggerlo.

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