我需要一些帮助来完成 Java 应用程序中的功能。
此函数用于下载文件,这些文件列在位于下载基础 URL 根目录的 xml 文件中。它将文件 etags 与已下载的文件 etags 进行比较,并进行更新。但是过时的文件仍在本地文件夹中,这会产生冲突问题。
这是代码:
private Set<Downloadable> getInternetFiles(Proxy proxy, File baseDirectory) {
Set<Downloadable> result = new HashSet<Downloadable>();
try
{
URL resourceUrl = new URL(UrlClass.DOWNLOAD_URL);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(resourceUrl.openStream());
NodeList nodeLst = doc.getElementsByTagName("Contents");
long start = System.nanoTime();
for (int i = 0; i < nodeLst.getLength(); i++) {
Node node = nodeLst.item(i);
if (node.getNodeType() == 1) {
Element element = (Element)node;
String key = element.getElementsByTagName("Key").item(0).getChildNodes().item(0).getNodeValue();
String etag = element.getElementsByTagName("ETag") != null ? element.getElementsByTagName("ETag").item(0).getChildNodes().item(0).getNodeValue() : "-";
long size = Long.parseLong(element.getElementsByTagName("Size").item(0).getChildNodes().item(0).getNodeValue());
if (size > 0L) {
File file = new File(baseDirectory, "/" + key);
if (etag.length() > 1) {
etag = Downloadable.getEtag(etag);
if ((file.isFile()) && (file.length() == size)) {
String localMd5 = Downloadable.getMD5(file);
if (localMd5.equals(etag)) continue;
}
}
Downloadable downloadable = new Downloadable(proxy, new URL(UrlClass.DOWNLOAD_URL + key), file, false);
downloadable.setExpectedSize(size);
result.add(downloadable);
}
}
}
long end = System.nanoTime();
long delta = end - start;
Launcher.getInstance().println("Time to compare : " + delta / 1000000L + " ms ");
} catch (Exception ex) {
Launcher.getInstance().println("Couldn't download files", ex);
}
return result;
}
我真的需要它来继续我的项目,但不知道如何实现删除方法。谢谢。