httpgetfilecache.java

来自「联合国农粮署牵头开发的geonetwork源代码最新版」· Java 代码 · 共 113 行

JAVA
113
字号
/** * HttpGetFileCache * * @author Stefano Giaccio */package org.wfp.vam.intermap.http.cache;import java.io.*;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Map;import org.apache.commons.httpclient.Header;import org.wfp.vam.intermap.kernel.CachedFiles;import org.wfp.vam.intermap.kernel.TempFiles;public class HttpGetFileCache implements HttpCache{//	private File directory;	private static Map uriHt = new HashMap();	private static Map headersHt = new HashMap();	private TempFiles tf;	// constructor	public HttpGetFileCache(String cacheDir, int expireTime) throws Exception {		tf = new CachedFiles(cacheDir, expireTime + 5);	}	public void put(String uri, byte[] response, Header[] headers) throws IOException {		File f = tf.getFile();		ByteArrayInputStream is = new ByteArrayInputStream(response);		FileOutputStream os = new FileOutputStream(f);		byte[] buf = new byte[1024];		for (int nRead; (nRead = is.read(buf, 0, 1024)) > 0; )			os.write(buf, 0, nRead);		uriHt.put(uri, f.getAbsolutePath());		headersHt.put(uri, headers);	}	public void put(String uri, InputStream is, Header[] headers) throws IOException {		File f = tf.getFile();		FileOutputStream os = new FileOutputStream(f);		byte[] buf = new byte[1024];		for (int nRead; (nRead = is.read(buf, 0, 1024)) > 0; )			os.write(buf, 0, nRead);		uriHt.put(uri, f.getAbsolutePath());		headersHt.put(uri, headers);	}	public byte[] get(String uri) throws IOException {		String name = (String)uriHt.get(uri);		if (name == null) return null;		File f = new File(name);		if (!f.exists()) return null;		FileInputStream is = new FileInputStream(f);		ByteArrayOutputStream os = new ByteArrayOutputStream();		byte[] buf = new byte[1024];		for (int nRead; (nRead = is.read(buf, 0, 1024)) > 0; )			os.write(buf, 0, nRead);		return os.toByteArray();	}	public String getResponseFilePath(String uri) {		return (String)uriHt.get(uri);	}	public String getHeaderValue(String uri, String header) {		Header[] h = (Header[])headersHt.get(uri);		if (h == null) return null;		for (Header loopheader: h) //int i = 0; i < h.length; i++) {		{//			System.out.println("name: " + loopheader.getName() + " = " + loopheader.getValue());			if (header.equalsIgnoreCase(loopheader.getName()))				return loopheader.getValue();		}		return null;	}	public Calendar getCachedTime(String uri) {		String name = (String)uriHt.get(uri);		if (name == null) return null;		File f = new File(name);		if (!f.exists()) return null;		Date t = new Date(f.lastModified());		Calendar c = Calendar.getInstance();		c.set(t.getYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds());		return c;	}	public void clear() {		uriHt.clear();	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?