適切に異なるストリームに新しい行を作成する方法

CeePlusPlus:

私はのコレクションを持っているOutputStreamいくつか(されているsocket.getOutputStream、いくつかはあるFileOutputStream-これらは長い間、それはまだすることができ、ソケットやファイルに出力し、同じコレクションにできるもので変更可能です。

ラインを書くとき、私は書く - foreachのOutputStreamを:

line = "\n" + line + "\n";

out.write(line.getBytes(StandardCharsets.UTF_8));
out.flush();

ファイルには、罰金に見えますが、ソケットストリームは、(複数のストリームがTelnet経由で一度に開くがある)(2つのソケットの例)このように見える終わります: ここでは、画像の説明を入力します。

ダニエルJunglas:

問題は、あなたがストリームに書き込むものではありませんが、読者はこれをどのように解釈しますか。例えば、Linux上で改行文字は\n「に行くように解釈され始め、次の行の」。Windowsの/ DOS上では、唯一の「次の行に行く」と解釈されます。そこにはまた、必要に\rあなたが行の先頭に行きたいことを示すために(キャリッジリターン)文字が。

でも、同じシステム上で、異なるプログラムが違うことを解釈することがあります。例えば、いくつかのテキストエディタは、かどうかのWindowsやUnixスタイルの改行で動作するように指示するスイッチを持っています。

だからあなたのストリームを読み取るコードに応じて、あなたは、一貫性のある動作を取得することができないかもしれません。あなたはすべての読者がために使用される文字(列)に同意していない限り、「次の行の先頭に行きます」。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=397072&siteId=1