java中怎样验证重复文件_java – 如何在下载之前检查URL中的重复文件

如果您有基本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编号),因此您无法重建它.

再次下载文件肯定会更容易/更快.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值