2016-11-12 3 views
-1

は、\nまたは\rで終わる文字列として行を考慮しているため、BufferedReader.readLine()がclientSocketからデータを読み取るのに適した方法ではないと言われました。しかし、私の行末記号は\r\nです。私はバッファリングされたリーダーのinstedを使用する必要がありますか?サーバのためにBufferedReaderの代わりに使用するもの

+2

BufferedReaderは問題ありません。 javadocを読むだけで、次のことが分かります。https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine(): "ある行は、改行(「\ n」)、キャリッジリターン(「\ rを」)、**またはキャリッジリターンを改行直後**。 –

+0

はい、私は '\のr'または' \行を取得する場合N '内部に、BufferedReaderのは右、私が予想より短い行を返すのだろうか? –

+1

を使用すると、テキストを扱っている場合は、 '\ r'はや' \ N'は改行を意味します。あなたがテキストを扱っていない場合、あなたが扱う必要がありますバイトなどのデータ、「ライン」の概念を忘れて、 'InputStream'を使用しています。 – SJuan76

答えて

1

\n又は\rで終わる文字列としてのラインをconsideresので、私は、はBufferedReader.readLine()はclientSocketからデータを読み取るのに適した方法ではないと言われました。

あなたは間違って言われました。 Javadocを参照してください。

しかし、ラインのための私の終了記号は、rを\ n \されます。私はバッファリングされたリーダーのinstedを使用する必要がありますか?

BufferedReaderの代わりに何も必要ありません。これはラインターミネータとして認識されます。 Javadocを参照してください。私は\rまたは\n

内部の行を取得する場合、そのような事はありません

...。

+0

実際には、物として。 、私はそれのラインを呼ぶが、それは、\ rのか\ n個を含むことができますメッセージであり、私が知っているすべては、それはあなたが個人的にあなたが個人的にラインで何を意味するか再定義した場合にのみ、そのようなことがあります\ Rの\ nを –

+0

で終わるということですあなたがしたように。現実の世界では、ラインターミネータを含むラインの概念は無意味です。 – EJP

関連する問題