2012-11-26 110 views
0

的我用下面的代碼來下載文件時關閉,我控制下載最新版本的文件

URL url = new URL("http://........"); 
HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
connection.setDefaultUseCaches(false); 
connection.setUseCaches(false); 
connection.setRequestMethod("GET"); 
connection.setDoOutput("true"); 
connection.connect(); 

InputStream in = connection.getInputStream(); 
File dst = new File("......."); 
FileOutputStream out = new FileOutputStream(dst); 
byte[] buffer = new byte[1024]; 
int len = 0; 
while ((len=in.read(buffer))>0) { 
    out.write(buffer,0,len); 
} 

connection.disconnect(); 
in.close(); 
out.close(); 

減去所有必要的嘗試,漁獲Web服務器。上述代碼適用於將文件下載到我的特定目的地。然而,它卻無法下載最新版本(例如,如果我更改了網絡服務器上的文件內容)

就好像有些東西在保存某種它之前下載的文件的緩存,只要URL與以前一樣,它發回相同的文件。我的數據連接在下載過程中變爲活動狀態,所以這可能是我的服務提供商的情況

我需要的是某種方式來強制我的代碼主動刷新目標文件。我發現網絡瀏覽器能夠做到這一點。如果我要輸入網絡瀏覽器的鏈接,然後再次運行我的代碼,則可以下載最新版本

回答

1

嘗試在URL的末尾添加?time=201211261200

+0

沒有工作..我目前仍然可以下載,我已經在服務器 –

+0

@Ian低上刪除的文件,我發現谷歌黑客攻擊,看到更新的答案。 –

+0

這不是隨機的,它是固定的,只會幫助一次。 (第一個電話) – RvdK

1

可以在服務器或客戶端修復它。

客戶端:嘗試通過添加隨機值來使URL隨機。因此總是會下載最新版本。

Random r = new Random(); 
int someValue = r.nextInt(10000); 

"http://someurl" + "?t=" + someValue;