2010-09-09 5 views
1

j'écrire du code pour supprimer un fichier, comme:Comment libérer une ressource après avoir supprimé un fichier par java?

File logFile = new File(fileName); 

deleteSuccess = logFile.delete(); 

Mais le VeraCode: me donner un avertissement au sujet de la ressource ne soit pas libéré. Je veux savoir comment libérer la ressource après avoir supprimé un fichier.

L'erreur VeraCode est comme suit

VeraCode:

Description de
L'application ne parvient pas à libérer (ou libère incorrectement) une ressource système avant qu'il ne soit mis à la disposition pour la réutilisation. Cette condition se produit souvent avec des ressources telles que des connexions de base de données ou des handles de fichiers. La plupart des problèmes de ressources inédits entraînent des problèmes généraux de fiabilité logicielle, mais si un attaquant peut intentionnellement déclencher une fuite de ressources, il peut être possible de lancer une attaque de déni de service en épuisant le pool de ressources.

Recommandations Lorsqu'une ressource est créée ou allouée, le développeur est responsable de libérer correctement la ressource et de prendre en compte tous les chemins d'expiration ou d'invalidation potentiels. Assurez-vous que tous les chemins de code libèrent correctement les ressources.

Répondre

1

Etes-vous sûr que c'est tout votre code? Parce qu'il n'y a rien de mal à cela. L'objet File est juste un wrapper autour du nom de fichier, il n'y a pas de ressources allouées pour cela. La méthode de suppression appelle également la fonction de système d'exploitation appropriée et ne nécessite aucun nettoyage par la suite.

Ce que vous devez fermer sont des flux dérivés du fichier (mais vous ne semblez en avoir aucun).

+0

Oui, les flux proches sont nécessaires, mais pour supprimer, je ne sais rien de ce que je peux publier. – user391370

+0

Je pense que l'outil est erroné. Recevez-vous d'autres avertissements avec lesquels vous ne comprenez pas ou n'êtes pas d'accord? – Thilo

0

Vous pouvez tenter d'annuler explicitement l'objet File une fois l'opération de suppression réussie (vérifiez la valeur booléenne renvoyée, si nécessaire, mais je ne connais pas vos intentions si l'opération de suppression échoue). De cette façon, vous pouvez être assuré du fait que la référence à l'objet File est perdue, et donc tous les objets liés sont également éligibles pour la récupération de place.

Si VercaCode continue à signaler cela comme un avertissement, je présume que vous pourriez être justifié en ignorant ce problème. Bien que la modification suggérée n'ajoute aucune valeur, en particulier si l'objet File est éligible pour la récupération de place une fois qu'elle est hors de portée, vous pouvez adopter cette pratique si vous souhaitez vous débarrasser de cet avertissement.

+0

Merci votre suggestion, je vais essayer – user391370

Questions connexes