我有一个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?
答案 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
对象..我错了吗?