J'ai un scénario où j'essaie de mettre en œuvre avec la fonctionnalité Java 7 'Essayer avec la ressource'. p>
Mon enfin Bloc contient un objet de Mais j'ai vérifié sur net et j'ai vu que le fichier bufferedWriter code> et et , que je souhaite fermer à l'aide de la fonctionnalité "Essayer avec ressource", au lieu de la clôturer en appelant explicitement la méthode de près . p>
code> ne met pas en œuvre l'interface code> autoclosable code>, mais bufferedwriter code> fait. Alors, comment puis-je gérer ce scénario pour implémenter la fonctionnalité "Essayer avec ressource"? p>
3 Réponses :
Vous n'avez pas besoin de fermer un fichier Il vous suffit de fermer votre code> car il s'agit d'un objet Java pur. Il suffit fondamentalement du nom du fichier, rien d'autre (c'est-à-dire qu'il ne nécessite aucune ressource OS de construction). P>
BufferedWriter CODE> et c'est correctement autoclosable code>. p>
J'étais sur le point de demander si un objet de fichier laisserait une poignée de fichier ouverte :)
try (BufferedWriter br = new BufferedWriter(new FileWriter(path))) Use this simply, br will be closed automatically. Eg. http://www.roseindia.net/java/beginners/java-write-to-file.shtml
Voici donc ici que, au lieu de créer un objet de fichier, je devrais passer directement le chemin du fichier dans le constructeur de filereader et contourner la création d'objet de fichier.right?
Oui, absolument, FileWriter fournit un constructeur comme le fichier digitalwriter (nom de fichier String), ioexception construit un objet FileWriter attribué à un nom de fichier.
Voir ce code d'exemple: rosetinia.net/java/beginners/ java-write-to-file.shtml
@milind: Vous pouvez toujours utiliser un fichier fichier code> si vous le souhaitez. Vous n'avez pas besoin de le fermer du tout!
Vous ne pouvez pas créer un fichier avec BufferedWriter seulement, BufferedWriter exige un écrivain, ce comment il devrait ressembler à
try (BufferedWriter w = new BufferedWriter(new FileWriter(new File("file")))) {
...
}
Comment cela aidera-t-il. Dites-vous ici que si je crée l'objet de fichier comme vous avez spécifié, alors lorsque le contrôle passe hors de l'essai BufferedWriter, FileWriter ainsi que le fichier sera automatiquement fermé?
@milind: Alors s'il vous plaît n'oubliez pas de uplifier toute réponse qui vous a aidé à résoudre et à accepter celui qui a aidé le plus.
@ Joachim Sauer Ya merci d'avoir rappelé. J'ai suscité de la réponse qui m'a aidé
La classe de fichiers n'a pas de méthode Open () ou une méthode de fermeture (), alors pourquoi il devrait être automatiquement fermeable est un mystère. C'est la bufferedInputStream qui a besoin de fermer. Pas une vraie question.