如果您有基本URL并存储具有相同文件名的文件.由于文件修改时间和If-Modified-Since HTTP Header,您可以询问服务器是否值得再次下载映像.
File f = new File();// the file to download
HttpURLConnection con = (HttpURLConnection) new URL("http://www.test.com/"+f.getName()).openConnection();
// Add the IfModifiedSince HEADER
con.setIfModifiedSince(f.lastModified());
con.setRequestMethod("GET");
con.connect();
if(con.getResponseCode() == 304) {
System.out.println(f+ " : already downloaded");
} else {
// Download the content again and store the image again
}
如果自第一次下载以来本地文件的修改时间保持不变并且服务器支持IfModifiedSince标头,则它将起作用.
如果您不知道如何匹配文件名和URL,那么没有明显的方法.
您可以使用快速HEAD请求进行一些实验并提取一些相关信息,例如:
>内容长度
>最后修改
> ETag
Content-Length Last-Modified可能是一个很好的匹配.
对于ETag,如果您知道http服务器如何构建ETag,您可以尝试在您的侧面(在所有本地文件上)构建它并将其用作比较值.
有关ETag的一些信息:
不幸的是,ETag可以构造为仅对服务器可见的信息(inode编号),因此您无法重建它.
再次下载文件肯定会更容易/更快.