2011-09-06 61 views
3

我试图下载从URL中image ...我的代码是:读写镜像

String url = "http://mysite.com/image.xyz" 

其中xyz可以是JPG/PNG/JPEG ..

现在

我能够使用

BufferedImage image = ImageIO.read(url); 

读取URL图像现在,我需要的是,虽然图像写入到文件中使用:

ImageIO.write(image, "variable" , new File("C:\\out1.jpg")); 

我需要的variable价值由xyz ...值替换其中xyz的值将会从URL extracted ....

那么如何实现这个...... ..

回答

2

使用类java.net.URL中:

URL u = new URL(url); 
String name = u.getFile(); 
String ext = name.substring(name.lastIndexOf(".") + 1); 

在内线您的扩展。

[编辑]

其他答案的几个注意事项发布:

他们都是很好的答案,除非你正好有查询参数的URL(如http://www.example.org/folder/file.png?size=big)。

使用最后三个字符,它会返回“大”,而不是PNG。

此外,如果图像是.jpeg,它会返回“挂钩”。

在上次“。”后使用。在字符串中也是危险的,或多或少地出于与查询参数相同的原因:它会返回“.png?size = big”。

java.net.URL将考虑所有这些情况,并仅返回文件名。对于那里,提取扩展仍然是“找到点”的问题,但至少在已经清理过的字符串上。

+0

很好地回答并解释了...... – RanRag

+0

对于u.getFile() – Thomas

+0

+1在问题中,变量'url'的类型是'String'。 –

1

为什么不只是在最后一个点后的子字符串?

或者使用Apache Commons FileIO的类FilenameUtils,它提供了从路径获取扩展的方法。

请注意,您也可能希望将该扩展名添加到输出文件,如果out.jpg实际上是一个PNG文件,则可能会引起混淆。