Question

FileNotFoundException est jeté sur toutes sortes d'occasions - pas nécessairement uniquement lorsque le nom de fichier est invalide, mais aussi quand e. g. autorisations ne à créer ou lire un fichier permettent pas:

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'exemple ci-dessus montre un ordinateur Windows allemand se plaindre de nom d'utilisateur ou mot de passe.

est-il un moyen de court analyse le message d'exceptions pour obtenir un peu d'information sur grain plus fin pourquoi exactement l'exception a eu lieu? Problème avec l'analyse du message est que dans différents endroits les messages peuvent varier.

Était-ce utile?

La solution

Faites la vérification de l'existence de fichiers / lecture-écriture des autorisations vous-même avant de créer FileOutputStream.

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

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

Notez que parfois, vous devrez vérifier les autorisations de lecture / écriture sur un parent de votre fichier de destination, si vous avez besoin pour créer un nouveau fichier.

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
  ...
}

Autres conseils

Vous pouvez regarder les propriétés du fichier en utilisant le java.io.File objet avant d'essayer de lire le fichier. Il y a une méthode canRead sur que vous pouvez utiliser pour déterminer si oui ou non l'utilisateur peut lire le fichier.

Une approche consiste à regarder le type réel de l'exception: comme vous pouvez le voir sur la page docs , il y a beaucoup de sous-classes qui fournissent des informations plus fin.

Cependant, vous ne serez probablement pas loin avec cela. Comme la plupart des exceptions vérifiées, il est généralement préférable de se connecter / signaler l'exception et demander à l'utilisateur des choix sur la façon de le corriger.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top