ファイルを受信するためにクライアント側で助けを求めます。可変入力レコードのファイル名。Inputstream の「is」と FileOutputStream の「bos」は、ファイルの保存を担当します。最初のファイルは配信されますが、他の受信ファイルは変数名で java.lang.NullPointerException が発生します。ファイルを作成するためにこのループを処理するにはどうすればよいですか。入力変数にはファイルの次の新しい名前が含まれ、ストリームは「is」になります新しいデータが含まれていますか?ファイル poison.pill は、送信の終了を通知します。
public class Receiver implements Runnable {
private int port;
public Receiver(int port) {
this.port = port;
}
@Override
public void run() {
Socket socket = null;
BufferedOutputStream bos = null;
try {
InetAddress adresa = InetAddress.getByName("localhost");
System.out.println("klient sa pripaja na adresu: " + adresa);
socket = new Socket(adresa, this.port);
System.out.println("socket = " + socket);
while (true) {
BufferedReader input = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String name = input.readLine();
/// while (???????) {}
if (name.equals("poison.pill")) {// null pointer exception
bos.close();
socket.close();
break;
}
int filesize = 1400;
int bytesRead;
byte[] bytearray = new byte[filesize];
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream(name);
bos = new BufferedOutputStream(fos);
while ((bytesRead = is.read(bytearray)) != -1) {
bos.write(bytearray, 0, bytesRead);
bos.flush();
}
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
誤解がある場合は、説明します。