1
ObjectOutputStream oos = new ObjectOutputStream(c.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(c.getInputStream());
File file = new File("lol.txt");
if(!file.exists()){
file.createNewFile();
}
byte[] textBytes;
while((textBytes = (byte[])ois.readObject()) != null){
Files.write(file.toPath(), textBytes);
}
//do stuff...
byte[] textBytes;
while((textBytes = (byte[])ois.readObject()) != null){
Files.write(file.toPath(), textBytes);
}
サーバー上でファイルを複数回読み取るにはどうすればよいですか?このコードは動作しますか?最初のループチェックに邪魔されませんか?Javaのobjectinputstreamを使用してサーバーからファイルを複数回読み取る方法
サーバーは、次のようにクライアントにそれを書いています。それはベースのバッファ、バッファ内の現在の位置がどこにあるかを示すためにdescriptor
を使用して、実装をブロックであるため
byte[] fileBytes = Files.readAllBytes(fp.toPath());
oos.writeObject(fileBytes);
oos.flush();
は、Java 'のインスタンスはC::
あなたのサーバクライアント通信は、このよう ( - - >サーバー、C>クライアントは、S、私は次の略語を使用)でなければなりません。 net.Socket'?そして、サーバーのソケットに接続された 'ObjectOutputStream'? – fireandfuel
はいcはjava.net.Socketのインスタンスで、oosはサーバーに接続されています。 –
NBあなたの読み取りループが無効です。 'readObject()'はストリームの最後にnullを返しません。あなたがnullを書いたときはいつでもそれを行うことができます。 'EOFException'をキャッチする必要があります。 – EJP