2009-11-30 3 views
2

Je rencontre un problème étrange avec le commons-io/java-io. Essentiellement, la création de mon fichier échoue silencieusement sans exception.Comment corriger cet échec silencieux d'écriture de fichiers à l'aide de Java IO?

FileUtils.writeLines(file, collectionOfStrings); 

Je l'ai regardé à travers le code des communes pour essayer de comprendre pourquoi ce silence ne, mais pour moi, il semble que ce devrait être lancer une exception. (Voir les lignes 1338, 163 en FileUtils.java et la ligne 927 dans IOUtils.java.)

Dans un effort pour essayer de corriger ce problème, j'ai ajouté ce chèque au code après la ligne précédente,

if (!file.exists()) { 
    logger.warn("File creation failed."); 
} 

Cependant, Même lorsque la création du fichier échoue, ce bloc n'est pas entré.

Je suis à bout de nerfs avec celui-ci, quelqu'un avec plus d'expérience avec Java IO peut-il m'aider?

+0

Etes-vous sûr que le fichier n'existe pas? Peut-être que c'est un fichier temporaire créé par l'application? –

+0

Eh bien, pour donner un peu plus de contexte à la question, en cours d'exécution localement sous mon ID, le fichier est créé sur un partage réseau auquel j'ai accès. Mais lorsque vous utilisez Tomcat dans un contexte Web, en tant que service local, le fichier n'est jamais créé, ce qui est logique pour moi. Cependant j'essaye juste de noter que le fichier n'a jamais été créé. –

Répondre

1

Je suis un peu gêné mais j'ai oublié d'inclure le commons-io jar avec mon application web. Il en résulte un problème d'exécution.

Mon vrai problème était que les java.lang.NoClassDefFoundError: org/apache/communes/io/FileUtils message n'a pas été d'entrer dans mon journal parce que NoClassDefFoundError n'est pas une exception, magnifique architecture Sun ici.

Lorsque cette NoClassDefFoundError a été atteinte, le reste du code ne s'est pas exécuté, y compris la vérification de fichier.exists().

+5

Note à venir, si vous voulez attraper des échecs pour votre journal, attraper Throwable, pas Exception. – james

+0

@james, absolument. Je viens de passer toutes mes captures d'enregistrement de niveau supérieur à Throwable. –

Questions connexes