⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpgetfilecache.java

📁 联合国农粮署牵头开发的geonetwork源代码最新版
💻 JAVA
字号:
/** * 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -