0

インターネットから画像を保存するプログラムを書いていますが、一部の画像が部分的に灰色になります。または、実際には灰色のアイコンです。画像を開くと、まったく灰色ではないからです。

画像を保存するために使用する方法は次のとおりです。

public static void saveImage(String imageUrl, String destinationFile) throws IOException{
    URL url = new URL(imageUrl);
    InputStream is = url.openStream();
    OutputStream os = new FileOutputStream(destinationFile);

    byte[] b = new byte[2048];
    int length;

    while ((length = is.read(b)) != -1) {
        os.write(b, 0, length);
    }

    is.close();
    os.close();
}

問題は、イメージが完全に書き込まれる前にストリームを閉じていることだと思います。それが完了したかどうかを確認する方法はありますか?

4

1 に答える 1

1

この動作は、Windows エクスプローラーでフォルダーを開き、コードがイメージを書き込んでいるのと同時に更新すると発生します。Windows はサムネイルを作成しようとします。ファイルの最初の部分にはすべての「headerinfo」が保存されているため、ウィンドウは画像の大きさなどを認識します。すべてのデータが存在するわけではないため、そのセクションのサムネイルは灰色になります。

于 2012-04-26T11:05:39.360 に答える