如果你真的想要或許違反SourceForges ToS,那麼這可能會有所幫助。
您需要wget.exe,如您所願。
ProcessBuilder pb = new ProcessBuilder("wget.exe","http://wurfl.cvs.sourceforge.net/viewvc/wurfl/?view=tar", "no-proxy");
Process p = pb.start();
只要您在類文件所在的目錄中有wget.exe,就會工作。
您可能還需要檢查文件是否存在,在這種情況下,你會做的線路中的東西:
ProcessBuilder pb = new ProcessBuilder("wget.exe","http://wurfl.cvs.sourceforge.net/viewvc/wurfl/?view=tar", "no-proxy");
Process p = pb.start();
int exitValue = p.waitFor();
BufferedReader reader;
// System.out.println("Exit Value" + exitValue);
if (exitValue == 0) {
reader = new BufferedReader(new InputStreamReader(p
.getInputStream()));
} else {
reader = new BufferedReader(new InputStreamReader(p
.getErrorStream()));
}
StringBuffer sb = new StringBuffer();
String temp = reader.readLine();
while (temp != null) {
sb.append(temp);
temp = reader.readLine();
}
reader.close();
System.out.println(sb.toString());
if(sb.toString().indexOf("404") != -1) {
//means that the file does not exist
System.out.println("File does not exist, or access is denied");
} else {
if(sb.toString().indexOf("200") != -1) {
//file exists, download it
System.out.println("File exists, downloading...");
ProcessBuilder pb = new ProcessBuilder("wget.exe","http://wurfl.cvs.sourceforge.net/viewvc/wurfl/?view=tar", "no-proxy");
Process p = pb.start();
}
但我建議不要刮SourceForge上,除非它自己的代碼,你是刮(我曾做過一次更新程序)。如果你這樣做,並且我的例子有幫助,請不要提及我。 =]
希望我幫了忙!
爲什麼要使用wget? – rzetterberg 2011-05-22 00:44:36
爲什麼不能使用標準Java庫來下載文件?至於文件名,只需給它一個隨機名和一個'.tar'擴展名即可。你可以用下面的方法產生一個隨機文件名:'Long.toHexString(Double.doubleToLongBits(Math.random()));'([source](http://mynotes.wordpress.com/2009/07/23/ java的生成隨機串/))。 – Jonah 2011-05-22 00:48:24
另請參閱這些[使用條款](http://sourceforge.net/apps/trac/sitelegal/wiki/Terms_of_Use)。 – trashgod 2011-05-22 01:00:35