Я создаю приложение, которое будет загружать большое количество файлов с моего собственного веб-сервера. Но idk, почему он не работает. Он не имеет никакого ответа ..Java - XML Parser & Downloader
Вот какая-то часть моего кода
Downloader.class
private Proxy proxy = Proxy.NO_PROXY;
public void downloadLibrary()
{
System.out.println("Start downloading libraries from server...");
try
{
URL resourceUrl = new URL("http://www.example.com/libraries.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(resourceUrl.openConnection(proxy).getInputStream());
NodeList nodeLst = doc.getElementsByTagName("Contents");
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();
File f = new File(launcher.getWorkingDirectory(), key);
downloadFile("http://www.example.com/" + key, f, "libraries");
}
}
}
catch(Exception e)
{
System.out.println("Error was found when trying to download libraries file " + e);
}
}
public void downloadFile(final String url, final File path, final String fileName)
{
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>()
{
@Override
protected Void doInBackground() throws Exception
{
launcher.println("Downloading file " + fileName + "...");
try
{
URL fileURL = new URL(url);
ReadableByteChannel rbc = Channels.newChannel(fileURL.openStream());
FileOutputStream fos = new FileOutputStream(path);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
}
catch(Exception e)
{
System.out.println("Cannot download file : " + fileName + " " + e);
}
return null;
}
@Override
public void done()
{
System.out.println(fileName + " had downloaded sucessfully");
}
};
worker.execute();
}
Вот какая-то часть моего XML-файл (libraries.xml)
<Key>libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0.jar</Key>
Моя идея в том, что мое приложение будет читать XML-файл. Затем он загрузит файл с сервера и сохранит его на компьютере. Например, мое приложение загружает http://www.example.com/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0.jar
, затем оно сэкономит C://WorkingDir/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0.jar
В моем файле XML есть тонна <Key></Key>
, и я должен загрузить все это.
Это что-то неправильное? Спасибо за помощь.
Ааааа! у вас есть C в вашей Java !!!!! – SnakeDoc
@SnakeDoc Что вы имели в виду? – Jeremy
Lol, шутить, конечно. В java, большую часть времени вы видите фигурные скобки {на одной строке, а не на следующей строке. обычно, когда вы видите на следующей строке, это либо студент (поскольку ученые обычно следуют шаблону следующей строки), либо кто-то, у кого есть родной язык C. Не всегда, но только мое наблюдение. ;) – SnakeDoc