0

ファイルのコンテンツを文字列として送信する必要があるクライアント サーバー プログラムがあり、BufferedReader.read メソッドを含む while ループを終了する方法を決定するのに問題があります。コードは次のとおりです。

while((c = in.read()) != -1){                             
    fw.write((char)c);
    System.out.print((char)c);
}

ただし、ソケットを使用するため、ソケットが閉じられるまで -1 にはなりません。while ループが到達するための終了句がわかりません。特殊文字はありますか?

一緒に行きました:

while((line = in.readLine()) != null && !line.equals(BasicProtocol.SENDING_FILE_DONE))

SENDING_FILE_DONE は、ストリームの最後に追加される文字列です。それを行う良い方法ではありませんが、データが文字列でなければならない場合は、この方法でなければなりません (私は信じています)。

4

2 に答える 2

1

ファイルのコンテンツを文字列として送信する必要があるクライアントサーバープログラムがあります

なんで?悪いアイデア。バイトとして送信する必要があります。そうしないと、データが破損する危険があります。

BufferedReader.read()メソッドを含むwhileループを終了する方法を決定するのに苦労しています

  1. ファイルにテキストが含まれているという仮定を避けるために、を使用BufferedReaderする必要があります。BufferedInputStream
  2. ファイルのサイズをファイルの前に送信し、ファイルのサイズを読み取ってから、正確にそのバイト数を読み取るまでループする必要があります。または、ファイルの送信後にソケットを閉じる必要があります。
于 2013-03-21T02:57:13.930 に答える
-1

BufferedReader を使用している場合は、行全体を一度に読み取ってみることができます..

String line;
while((line = in.readLine()) != null) {
  // your code here
}
于 2013-03-21T02:47:11.463 に答える