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();

减去所有必要的尝试捕获。上面的代码适用于将文件下载到我的特定目的地。但是无法下载最新版本(例如,如果我更改网络服务器上的文件内容)

就好像某物正在保留它之前下载的文件的某种缓存,只要 URL 与以前相同,它就会发回相同的文件。我的数据连接在下载期间变为活动状态,因此我的服务提供商可能会出现这种情况

我需要的是某种方式来强制我的代码主动刷新目标文件。我发现网络浏览器能够做到这一点。如果我用网络浏览器输入链接,然后再次运行我的代码,最新版本会被下载

4

2 回答 2

1

尝试?time=201211261200在 URL 的末尾添加一个。

于 2012-11-26T08:28:11.407 回答
1

要么在服务器上修复它,要么在客户端修复它。

客户端:尝试通过添加随机值使 URL 随机化。因此,总是会下载最新版本。

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

"http://someurl" + "?t=" + someValue;
于 2012-11-26T09:01:20.927 回答