我需要从给定的 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();
问题是我下载了两次文件 - 我想使用缓存来防止这种情况。现在我读到了,ImageIO.setUseCache(false);
但它似乎不起作用(也许我在这里做错了什么)。
编辑:我注意到我使用创建输入流new URL(imageURL).openStream()
- 这是我正在做的第一次下载,我认为我应该使用 ImageIO 方法之一来获取它,然后ImageIO.setUseCache(false);
就可以了。
我对吗?
我该怎么做-我尝试使用ImageIO.createImageInputStream(imageURL);
但出现异常:
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.createImageInputStream(Unknown Source)
那么,我该怎么做呢?
谢谢。