防止applet缓存下载的文件

时间:2013-11-20 20:26:03

标签: java caching

我有一个applet,用于从网络中检索要打印的文件,我偶尔会遇到一个问题,如果它已经更改,则返回文件的缓存版本而不是实际版本。

例如:

URL http = new URL(url +"/"+ m_printfile.get(i));
Doc myDoc = new SimpleDoc(http, myFormat, das);
DocPrintJob job = service.createPrintJob();
job.print(myDoc, aset);

由于我使用SimpleDoc来打印文件,我还没有找到使用URLConnection对象的方法,这是我看到禁用缓存文件的唯一方法。

有没有办法使用URL对象,或者有没有办法将URLConnection传递给SimpleDoc?

1 个答案:

答案 0 :(得分:1)

1)您可以将URLConnection传递给SimpleDoc,如下所示:

URL http = new URL(url +"/"+ m_printfile.get(i));
URLConnection conn = http.openConnection();
conn.setUseCaches(false);
conn.connect();
Doc myDoc = new SimpleDoc(conn.getInputStream(), myFormat, das);
DocPrintJob job = service.createPrintJob();
job.print(myDoc, aset);

2)避免缓存的脏方法是添加一个随机无关的数据,如下所示:

URL http = new URL(url +"/"+ m_printfile.get(i) +"?z="+Math.random() );

这样,每次看起来都是不同的URL,所以缓存不会影响......

P.S。你的第二行似乎很奇怪..(Doc myDoc = new SimpleDoc(http, myFormat, das))。它真的适合你吗?我的意思是,http不是InputStream对象..我错了吗?