我有一种从 URL 下载图像的方法。如下图。。
public static byte[] downloadImageFromURL(final String strUrl) {
InputStream in;
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
URL url = new URL(strUrl);
in = new BufferedInputStream(url.openStream());
byte[] buf = new byte[2048];
int n = 0;
while (-1 != (n = in.read(buf))) {
out.write(buf, 0, n);
}
out.close();
in.close();
}
catch (IOException e) {
return null;
}
return out.toByteArray();
}
我有一个图片网址,它是有效的。例如。
我的问题是,如果图像真的不存在,我不想下载。喜欢....
此图像不应该通过我的方法下载。那么,我怎么知道给出的图像 URL 并不存在。我不想验证我的 URL(我认为这可能不是我的解决方案)。
所以,我用谷歌搜索。从这篇文章...... 如何检查一个URL是否存在或使用Java返回404?并 使用其 URL 检查远程服务器上是否存在文件
但是这个 con.getResponseCode() 将始终返回状态代码“200”。这意味着我的方法也会下载无效的图片 url。所以,我输出我的bufferStream就像......
System.out.println(in.read(buf));
无效的图像 URL 生成“43”。所以,我在我的方法中添加了这些代码行。
if (in.read(buf) == 43) {
return null;
}
没关系。但我认为这不会总是令人满意。有没有其他方法可以得到它?我对吗?我真的很感激任何建议。这个问题可能会影响我的头脑。感谢您阅读我的问题。
*更新
我称这种下载方法并将下载的图像保存在某个目录中为..
// call method to save image
FileSupport.saveFile(filePath+".JPG", data);
之后我尝试输出为...
File file = new File(filePath+".JPG);
System.err.println(file.length());
这也可能为无效的图像 url产生“43 ”。我想知道为什么所有无效网址都返回“43”。什么是“43”?