特定の URL からファイルをダウンロードする必要がありますが、拡張子のないファイルを取得できます。拡張子が何であるかを理解するために、次のサービスを作成しました。
public String getExtension(String imageURL){
InputStream stream = new URL(imageURL).openStream();
ImageInputStream iis = ImageIO.createImageInputStream(stream);
Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
ImageReader reader = imageReaders.next();
String retVal = reader.getFormatName();
closeInputStreamAndDisposeReader(reader);
return retVal;
}
後でその画像をダウンロードする必要があるので、次のように書きました。
BufferedImage image = ImageIO.read(imageURL);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write( image, extension, byteArrayOutputStream );
byteArrayOutputStream.flush();
byte[] imageInBytes = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
問題は、ファイルを 2 回ダウンロードしていることです。それを防ぐためにキャッシュを使用したいと考えています。今読んだのですImageIO.setUseCache(false);
が、うまくいかないようです(おそらく、ここで何か間違ったことをしているのでしょう)。
編集: を使用して入力ストリームを作成していることに気付きましnew URL(imageURL).openStream()
たImageIO.setUseCache(false);
。
私は正しいですか?
どうすればそれを行うことができますか - を使用しようとしましたImageIO.createImageInputStream(imageURL);
が、例外が発生しました:
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.createImageInputStream(Unknown Source)
それで、どうすればそれを行うことができますか?
ありがとう。