Sokete yazmak istiyorum. BufferedWriter
önerilir OutputStreamWriter
girdi tampon ediyorumBufferedWriter ve BufferedOutputStream birlikte kullanmak aşırı mı?
OutputStream outs=null;
BufferedWriter out=null;
out =
new BufferedWriter(
new OutputStreamWriter(new BufferedOutputStream(outs),"UTF-8"));
o yazar önlediğinden,: ağ IO hakkında okumasını, böyle bir şey yapmak olduğunu en iyi yolu yazmak için geliyor bana her karakter için kodlayıcıyı başlatma. , baytları ağa bir kerede bir bayt koymaktan kaçınmak için baytları arabelleğe alır.
Biraz overkill gibi görünüyor, ama hepsi yardımcı oluyor gibi görünüyor? herhangi bir yardım sükranla ..
DÜZENLEME: OutputStreamWriter
üzerine javadoc kaynaktan:
bir yazma Her bir çağırma() metodu kodlayan dönüştürücü belirli bir karakter (ler) üzerinde çağrılır neden olur. Sonuçtaki baytlar, temel çıktı akışına yazılmadan önce bir tamponda biriktirilir. Bu arabelleğin boyutu belirtilebilir, ancak varsayılan olarak çoğu amaç için yeterince büyüktür. Write() yöntemlerine iletilen karakterlerin arabelleğe alınmadığını unutmayın.
En yüksek verimlilik için, sık sık dönüştürücü çağrışımlarından kaçınmak için bir BufferedWriter içinde bir OutputStreamWriter sarmayı düşünün. BufferedWriter her bir karakter için kodlayıcı başlatılmasından yazar önlediği için önerilir OutputStreamWriter girdi tampon olacaktır
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
Cevabınız için teşekkür ederiz. OutputStreamWriter üzerindeki javadoc'tan, "Write() yönteminin her bir komutu, kodlama dönüştürücüsünün belirtilen karakter (ler) üzerinde çalıştırılmasına neden olur. Sonuçtaki baytlar, temel çıktı akışına yazılmadan önce bir tamponda biriktirilir. Bu arabellek belirtilebilir, ancak varsayılan olarak çoğu amaç için yeterince büyüktür. write() yöntemlerine iletilen karakterlerin arabelleğe alınmadığını unutmayın. En yüksek verim için, bir Sıkıştırılmış Yazıcı içinde bir OutputStreamWriter'ı sık dönüştürücü çağrılarından kaçınmak için sarmalamayı düşünün. ." OP etiketindeki tüm alıntılar – Bruce
@Bruce: * Düşün *, elbette. Bu, * ile * aynı değildir. Ben test ederim. Yine de çoğu durumda önemli bir fark yarattığını görmekten çok şaşıracaktım. –
Yararlı yanıtlarınız için teşekkürler. Evet, test etmeliyim. Aslında bir röportaj için yaptığım bir programlama testinin bir parçası olarak ve varsayılan çözümün ne tür olacağını ya da en azından birisinin yanlış olmadığını bilmek istedim. – Bruce