1

私は宿題をしていて、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();

    }

助けてくれてありがとう!

4

1 に答える 1

0

それが要件であると思います:Webページをローカルに作成します。

ファイル(html、jpegなど)をダウンロードするだけでなく、ディレクトリ構造も複製する必要があります。ローカルで機能させるために別のコードを記述する必要はありません。

それが役に立てば幸い :-)

于 2012-09-24T14:20:27.200 に答える