私は宿題をしていて、httpサーバーに接続し、ソケットプログラミングを使用してhtmlファイルと画像ファイルをダウンロードする必要があります。
私はうまくやっていて、htmlファイルと画像ファイルの両方を正しくダウンロードして書き込むことができます。しかし、宿題の要件を満たすようにコードを編集すると(Webページはローカルで機能する必要があるため、コードを編集してhtmlを書き換えると、画像ファイルが正しく書き込まれません。
画像をダウンロードするメソッドのコードを編集したことを覚えていません。完了したと思ったときにファイルをチェックしたところ、画像に無効な画像が表示されていました。
バイト(notepad ++で正しい画像とダウンロード画像を並べて開くと)、バイトは同じです。問題は、ダウンロードされたイメージでは、バイトが1つの長い行として書き込まれるのに対し、正しいイメージでは、バイトが1行ずつ書き込まれることです。
いくつかの異なる方法を試しましたが、どちらも機能しませんでした。実際、(上記の編集前に)友人に送信した古いコードも機能していないようです。何か案は?
DataInputStream imgIn=new DataInputStream(socket.getInputStream());
DataOutputStream imgOut = new DataOutputStream(new FileOutputStream(host+path));
byte[] byteArr=new byte[1024];
int bytesRead=0,totalBytesRead=0;
while (totalBytesRead<imageSize ){
bytesRead=imgIn.read(byteArr,0,1024);
totalBytesRead+=bytesRead;
imgOut.write(byteArr,0,bytesRead);
imgOut.flush();
}
/* while ((bytesRead = imgIn.read(byteArr)) > 0)
{
imgOut.write(byteArr, 0, bytesRead);
imgOut.flush();
}*/
imgIn.close();
imgOut.close();
}
助けてくれてありがとう!