2011-01-15 9 views
1

javaには、のような別のオブジェクトがあります。サーバーによって記録されたデータを読み取るためにBufferedReaderがありますか? サーバは改行なしで文字列を送信し、クライアントは文字列を出力しないため、サーバは接続フォームのタイムアウトを閉じます(タイムアウトメッセージに改行があります)。クライアントがすべてのメッセージを表示し、 ! おかげさまで!BufferedReader、文字列を取得するための他のオブジェクト

+2

ここでのJava APIはないのです(それが本来の改行を同様に維持する):http://java.sun.com/ javase/6/docs/api/- 使い方を学んでください。 –

+2

マイケル、それほど役に立たない。クラスライブラリ全体やフレームワークに近づくことはかなり難しいかもしれません。そして、あなたがしたことが、小さなテキストファイルやコンソールI/O(初心者のプログラミングタスクには不合理ではない)だったならば、BufferedReaderが実際に知っている唯一のものかもしれません(そして、ちょっと、readLine )。 – Joey

+2

ジョーイ:マイケルのコメントはおそらく本質的にスニークであったが、彼のアドバイスは健全である。 Javaに堪能な人は、Java APIをどのように使いこなすかを知っていて、あなたのものと似た性質の質問をしている最初のソースとして使用します。 Java APIで物事を見つける方法を学ぶことが最も重要です。 Javaは、APIドキュメントのベストセットの1つにも恵まれています。 – whaley

答えて

1

サーバーから何かを読むときは、通信プロトコルに厳密に従わなければなりません。たとえば、サーバーはHTTPサーバーまたはSMTPサーバーであり、送信前にデータを暗号化したり、データの一部を別の方法でエンコードしたりすることがあります。

基本的に質問する必要があります:どのようなサーバーにアクセスしますか?どのようにバイトを私に送りますか?そして、他の誰かがバイトを解釈する作業をすでに済ませているので、私が本当に必要とするデータにすばやくアクセスできるようになりましたか?

HTTPサーバーの場合は、コードnew URL("http://example.org/").openStream()を使用できます。次に、バイトのストリームを取得します。これらのバイトを文字、文字列などに変換する方法は別の作業です。

2

readLine()メソッドを使用して改行を読み取るのではなく、read()メソッドを使用してchar-by-charを読み取るだけです。

for (int c = 0; (c = reader.read()) > -1;) { 
    System.out.print((char) c); 
} 
2

あなたは別のクラスを使用するように頼んだので、その場合はScannerを試してみてください。これは通常、パターンまたは入力から推論されたタイプ(例えば、バイト単位またはint単位、またはそれらのいくつかの組み合わせでの読み込み)に基づいて入力を区切るために使用されます。しかし、あなたのユースケースをカバーするために、これを単なる汎用の "リーダー"として使うこともできます。

0

あなたは

InputStream is = ... // from input 
String text = IOUtils.toString(is); 

は、改行せずにせずに、テキストに入力をオンにしてみてください可能性が

関連する問題