Je crée une classe de liaison abstraite pour Reader
et Writer
où l'utilisateur n'a pas besoin de référencer chacun individuellement. Exemple: J'ai un FileStream
qui contient FileReader
et FileWriter
.Quand les lecteurs/auteurs/flux sont-ils identifiés comme ouverts?
La question que j'ai se réfère à l'optimisation de la classe. Je sais que je ne peux pas avoir deux flux ouverts simultanément en raison de la simultanéité, mais j'ai besoin de les initialiser quelque part sans avoir de fuites de données partout.
Est-ce que les flux/lecteurs/graveurs sont ouverts, dès que vous les initialisez, ou bien les «tuyaux» ne sont-ils ouverts qu'une fois que la première lecture/écriture a commencé? Je regarde la JavaDoc et ne voient pas ouvrir quoi que ce soit ici quand les cours d'eau réellement ...
Pour ceux qui ne comprennent pas ce que je demande (sans tenir compte des blocs try-catch):
// does my reader become OPEN here?
BufferedReader br = new BufferedReader(new FileReader("foobar.txt"));
// or here, now that I have performed the first operation.
br.readLine();
les deux implémentent 'Closeable', donc si utilisé dans un' try-with' sera auto-fermable, voir https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html –
_ "Je sais Je ne peux pas avoir deux flux ouverts simultanément en raison de la concurrence "_ - que voulez-vous dire par là? Voulez-vous dire entrée et sortie sur le même fichier? _ "sans avoir des fuites de données partout" _ - Pourquoi pensez-vous que cela se produira? S'il vous plaît montrer un code réel et expliquer un problème réel. En l'état, votre question semble reposer sur des idées fausses et est trop abstraite pour qu'on y réponde. –
@JimGarrison Je n'ai pas d'exemples, mais je le fais sur un seul thread qui causera des problèmes de synchronisation si c'est fait en même temps. Pas besoin d'écrire dans un fichier et d'essayer ensuite de lire quand les tampons regardent des choses différentes. Ma question ne fait pas référence à un problème clair mais plutôt à la nature abstraite de (trois) classes et donc oui, j'écris une question abstraite. Il n'est toutefois pas ambigu et je suis sûr qu'une réponse est *** plus que probable *** pour pouvoir obtenir une réponse. – finnrayment