Voglio scrivere su una presa. Da leggere su rete IO, mi sembra che il modo ottimale per scrivere ad esso è quello di fare qualcosa di simile:È eccessivo usare BufferedWriter e BufferedOutputStream insieme?
OutputStream outs=null;
BufferedWriter out=null;
out =
new BufferedWriter(
new OutputStreamWriter(new BufferedOutputStream(outs),"UTF-8"));
Il BufferedWriter
sarebbe tamponare l'ingresso al OutputStreamWriter
che è raccomandato, in quanto impedisce lo scrittore dall'avvio del codificatore per ogni carattere.
Il BufferedOutputStream
memorizza quindi i byte da Writer
per evitare di immettere un byte alla volta potenzialmente nella rete.
Sembra un po 'eccessivo, ma sembra che tutto aiuti? grato per qualsiasi aiuto ..
EDIT: Dal javadoc sul OutputStreamWriter
:
Ciascuna invocazione di un metodo write() fa sì che il convertitore di codifica da richiamare sul carattere dato (s). I byte risultanti vengono accumulati in un buffer prima di essere scritti nel flusso di output sottostante. La dimensione di questo buffer può essere specificata, ma per impostazione predefinita è abbastanza grande per la maggior parte degli scopi. Si noti che i caratteri passati ai metodi write() non sono bufferizzati.
Per la massima efficienza, prendere in considerazione il wrapping di un OutputStreamWriter all'interno di un BufferedWriter in modo da evitare frequenti invocazioni del convertitore. Ad esempio:
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
Grazie per la risposta. Da javadoc su OutputStreamWriter, "Ogni invocazione di un metodo write() causa l'invocazione del convertitore di codifica sul/i carattere/i dato/i. I byte risultanti vengono accumulati in un buffer prima di essere scritti nel flusso di output sottostante. questo buffer può essere specificato, ma per impostazione predefinita è abbastanza grande per la maggior parte degli scopi.Tenuta che i caratteri passati ai metodi write() non sono bufferizzati.Per la massima efficienza, considera l'involucro di un OutputStreamWriter all'interno di un BufferedWriter in modo da evitare frequenti richiami di convertitori ". Offerta intera in OP edit – Bruce
@Bruce: * Considerare *, sicuro. Non è lo stesso di * raccomandare *. Lo testerei. Sarei molto sorpreso di vederlo fare una differenza significativa nella maggior parte dei casi però. –
Grazie per le tue utili risposte. Sì, dovrei provarlo. In realtà è come parte di un test di programmazione che ho fatto per un colloquio, e volevo sapere quale sarebbe stata la soluzione corretta di default, o almeno quella che non era ovviamente sbagliata. – Bruce