亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? messageindex.java

?? mywork是rcp開發的很好的例子
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * MessageIndex.java
 *
 * Copyright (C) 1998-2000 FreeBeans <freebeans@mub.biglobe.ne.jp>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * Copyright (C) 1998-2000? FreeBeans <freebeans@mub.biglobe.ne.jp>
 *
 * ?????????????????????????Free Software Foundation 
 * ?????GNU ??????????????????????????????
 * ?????????????????????????????????????
 * ???????????????????
 * ?????????????????????????????????????
 * ?????????????????????????????????????
 * GNU ??????????????????
 *
 * ???????????????GNU ??????????????????
 * ???????????????Free Software Foundation, Inc., 675 Mass Ave,
 * Cambridge, MA 02139, USA ????????????
 */
package jp.gr.java_conf.roadster.net.pop;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Vector;
import java.util.WeakHashMap;

import javax.mail.Flags;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetHeaders;

/**
 * ?????????????????.
 * ??????????????????????????????.
 * ??????????????????? POP3Folder ???????
 * ???????????????????????????????.
 */
public class MessageIndex {
	/**
	 * ???????????.
	 */
	private static final String INDEX_FILE_NAME = "folder.idx";
	
	/**
	 * ???????????????.
	 */
	private static final String DATA_FILE_SUFFIX = ".dat";

	/**
	 * ???????????.(=16KB)
	 */
	private static final int BUFFER_SIZE = 16 * 1024;
	
	/**
	 * ??????.
	 * ??????????????????????????
	 * ??????????????.
	 */
	private static Hashtable instances = new Hashtable();

	/**
	 * ???????????????.
	 * ?????????????????????????????????.
	 */
	private static SaverThread saverThread;

	/**
	 * ?????????.
	 */
	private File dataDirectory;
	
	/**
	 * ??????????.
	 */
	private File indexFile;
	
	/**
	 * ????????.
	 */
	private Vector elements;
	
	/**
	 * ?????????????WeakHashMap ???????
	 * MessageIndexElement???????InternetHeaders ?????????????????
	 */
	private static HashMap<String,SerializableInternetHeaders> HEADERS_MAP=new HashMap<String,SerializableInternetHeaders>();
	
	/**
	 * ?????????????WeakHashMap ???????
	 * MessageIndexElement???????byte[] ???????content????????????
	 */
	private static final WeakHashMap CONTENT_MAP=new WeakHashMap();
	
	private static boolean cacheContent=true;  //是否對內容進行緩存,搜索時不緩存

	/**
	 * ??????????????????????
	 * MessageIndex ????????????.
	 * ?????????????????????.
	 * MessageIndex ?????????getInstance() ??????????????.
	 *
	 * @param	dataDirectory	?????????????.
	 * @see	#getInstance(java.io.File)
	 */
	private MessageIndex(File dataDirectory) {
		try {
			this.dataDirectory = dataDirectory;
			indexFile = new File(dataDirectory, INDEX_FILE_NAME);
			load();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}

	/**
	 * ???????????????? MessageIndex ??????????.
	 *
	 * @param	dataDirectory	?????????????.
	 */
	public static synchronized MessageIndex getInstance(File dataDirectory) {
		if (saverThread == null) {
			saverThread = new SaverThread();
			saverThread.start();
		}
		MessageIndex mfi = (MessageIndex) instances.get(dataDirectory);
		if (mfi == null) {
			mfi = new MessageIndex(dataDirectory);
			instances.put(dataDirectory, mfi);
		}
		return mfi;
	}

	/**
	 * ????? elements ??????.
	 */
	public synchronized void initElements() {
		if (elements == null) {
			elements = new Vector();
			elements.addElement(INDEX_FILE_NAME);	// 0??????????.
		} else {
			elements.setSize(1);
		}
	}
	
	/**
	 * ????????????????????????????? POP3Message ????????????.
	 *
	 * @param	folder	POP3Folder ???????.
	 * @param	msgnum	???????.
	 * @exception	java.lang.IndexOutOfBoundsException	msgnum ???????????.
	 */
	public synchronized POP3Message createMessage(POP3Folder folder, int msgnum) throws MessagingException {
		POP3Message message = new POP3Message(folder, msgnum);
		message.setInternalID(elements.elementAt(msgnum));
		return message;
	}
	
	/**
	 * ??????????????????????????????????.
	 *
	 * @param	message	?????.
	 * @return	???????.
	 * @exception	java.io.IOException	??????????.
	 */
	private synchronized InputStream getInputStream(POP3Message message) throws IOException {
		MessageIndexElement mie = (MessageIndexElement) message.getInternalID();
		return new BufferedInputStream(mie.getInputStream(dataDirectory), BUFFER_SIZE);
	}

	/**
	 * ???????????InternetHeaders????
	 * Java2?????????????????????????????????????
	 * ??????????????????????WeakHashMap?????????JDK1.1???????????????
	 * JDK1.1??????????????????new????
	 *
	 * @param	message	??????
	 * @return	InternetHeaders
	 * @throws	javax.mail.MessagingException	???????????
	 */
	public synchronized InternetHeaders getHeaders(POP3Message message) throws MessagingException {
		SerializableInternetHeaders ret = null;
		MessageIndexElement mie = (MessageIndexElement) message.getInternalID();
		try {
			if (HEADERS_MAP != null) {
				synchronized (HEADERS_MAP) {
					ret = (SerializableInternetHeaders) HEADERS_MAP.get(mie.getFileName());
				}
			}
			if (ret == null) {	// ????????????????????????
				InputStream is = getInputStream(message);
				ret = new SerializableInternetHeaders(is);
				is.close();
				if (HEADERS_MAP != null) {	// ????????????????
					synchronized (HEADERS_MAP) {
						HEADERS_MAP.put(mie.getFileName(), ret);
					}
				}
			}
		} catch (IOException ioe) {
			throw new MessagingException("IOException", ioe);
		}
		return ret;
	}

	/**
	 * ???????????content??? byte[] ????
	 * Java2?????????????????????????????????????
	 * ??????????????????????WeakHashMap?????????JDK1.1???????????????
	 * JDK1.1??????????????????new????
	 *
	 * @param	message	??????
	 * @return	content???byte[]
	 * @throws	javax.mail.MessagingException	???????????
	 */
	public synchronized byte[] getContentBytes(POP3Message message) throws MessagingException {
		byte[] ret = null;
		MessageIndexElement mie = (MessageIndexElement) message.getInternalID();
		try {
			if (CONTENT_MAP != null) {
				synchronized (CONTENT_MAP) {
					ret = (byte[]) CONTENT_MAP.get(mie);
				}
			}
			if (ret == null) {	// ????????????????????????
				InputStream is = getInputStream(message);
				InternetHeaders headers = new SerializableInternetHeaders(is);
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				byte[] buff = new byte[16 * 1024];
				int len;
				while ((len = is.read(buff)) != -1) {
					baos.write(buff, 0, len);
				}
				is.close();
				baos.close();
				ret = baos.toByteArray();
				if (CONTENT_MAP != null && cacheContent) {	// ????????????????
					synchronized (CONTENT_MAP) {
						CONTENT_MAP.put(mie, ret);
					}
				}
			}
		} catch (IOException ioe) {
			throw new MessagingException("IOException", ioe);
		}
		return ret;
	}
	
	/**
	 * ?????????????????.
	 * ?Message?isExpunged()?true?????????????????????????
	 *
	 * @param	msgs	????????????.
	 *                  ???????????????????????.
	 */
	public synchronized void append(Message msgs[]) {
		for (int i = 0; i < msgs.length; ++i) {
			try {
				Message message = msgs[i];
				if (! message.isExpunged()) {
					File file = createMessageFile();
					BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file), BUFFER_SIZE);
					message.writeTo(bos);
					bos.close();

					MessageIndexElement mie = new MessageIndexElement();
					mie.setFileName(file.getName());
					mie.setFlags(message.getFlags());
					elements.addElement(mie);
					saverThread.enqueue(this);
				}
			} catch (IOException ioe) {
				ioe.printStackTrace();
			} catch (MessagingException me) {
				me.printStackTrace();
			}
		}
	}
	
	/**
	 * ???????????????????????????.
	 *
	 * @param	msgs	?????????.
	 */
	public synchronized void remove(POP3Message msgs[]) {
		Vector removeElements = new Vector();
		for (int i = 0; i < msgs.length; ++i) {
			MessageIndexElement elem = (MessageIndexElement) msgs[i].getInternalID();
			elem.delete(dataDirectory);
			removeElements.addElement(elem);
		}
		Enumeration e = removeElements.elements();
		while (e.hasMoreElements()) {
			elements.removeElement(e.nextElement());
		}
		saverThread.enqueue(this);
	}
	
	/**
	 * ??????????????????.
	 * ???????????????????????
	 *
	 * @return	????????? true.
	 */
	public synchronized boolean removeAll() {
		initElements();
		String files[] = dataDirectory.list(
			new FilenameFilter() {
				public boolean accept(File dir, String name) {
					File file = new File(dir, name);
					if (file.isFile()) {
						return true;
					} else {
						return false;
					}
				}
			});
		boolean result = true;
		for (int i = 0; i < files.length; ++i) {
			File file = new File(dataDirectory, files[i]);
			if (! file.delete()) {
				result = false;
			}
		}
		return result;
	}
	
	/**
	 * ?????????.
	 *
	 * @return	??????.
	 */
	public synchronized int getCount() {
		return elements.size() - 1;
	}
	
	/**
	 * ???????????????.
	 */
	private synchronized void save() throws IOException {
		if (elements.size() > 1 || indexFile.exists()) {
			FileOutputStream   fos = new FileOutputStream(indexFile);
			ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(fos, BUFFER_SIZE));
			oos.writeObject(elements);
			oos.close();
		}
	}
	
	/**
	 * ???????????????????.
	 *
	 * @exception	java.io.IOException	??????????.
	 */
	static synchronized void saveAll() throws IOException {
		if (saverThread != null) {
			saverThread.saveAllIndexes();
		}
	}
	
	/**
	 * ???????????????.
	 * ??????????????.
	 *
	 * @exception	java.io.IOException	??????????.
	 */
	private synchronized void load() throws IOException {
		initElements();
		try {
			FileInputStream   fis = new FileInputStream(indexFile);
			ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(fis, BUFFER_SIZE));
			elements = (Vector) ois.readObject();
			ois.close();
		} catch (FileNotFoundException fnfe) {
			recoverIndex();
		} catch (ClassNotFoundException cnfe) {
			recoverIndex();
		}
	}

	public synchronized void reload() throws IOException {
		load();
	}
	
	/**
	 * ???????????????????????????.
	 */
	private void recoverIndex() throws IOException {
		initElements();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品看片你懂得| 一区二区在线电影| 久久久午夜精品| 久久综合给合久久狠狠狠97色69| 欧美丰满一区二区免费视频| 欧美日韩免费观看一区三区| 91激情五月电影| 在线成人午夜影院| 欧美一区二区三区在线电影| 日韩欧美国产精品一区| 日韩久久免费av| 国产精品不卡一区| 一级特黄大欧美久久久| 三级在线观看一区二区| 久久电影网电视剧免费观看| 国产成人精品影院| 在线精品观看国产| 精品伦理精品一区| 亚洲日穴在线视频| 久久精品免费观看| 色综合久久综合网97色综合| 欧美一区二区三区播放老司机| 久久蜜臀精品av| 亚洲精品网站在线观看| 日韩精品91亚洲二区在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲成人av一区二区| 亚洲午夜激情av| 国内外精品视频| 成人黄色国产精品网站大全在线免费观看| 成人网在线播放| 欧美色偷偷大香| 久久综合中文字幕| 国产乱子轮精品视频| 美国毛片一区二区三区| 日本精品一区二区三区高清 | 五月婷婷欧美视频| 国产高清不卡一区二区| 欧美日韩高清影院| 国产精品美女一区二区三区| 久久aⅴ国产欧美74aaa| 欧美一区二区三区公司| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 首页亚洲欧美制服丝腿| 在线影视一区二区三区| 亚洲欧美另类久久久精品2019| 激情六月婷婷久久| 精品少妇一区二区三区免费观看 | 日韩国产在线观看一区| 99精品国产视频| 2020日本不卡一区二区视频| 国产一区三区三区| 欧美日韩在线不卡| 日韩高清在线电影| 日韩一区二区三免费高清| 五月开心婷婷久久| 精品三级在线观看| 国产成人在线视频网址| 国产午夜精品在线观看| 国产成人精品亚洲777人妖| 精品国产伦一区二区三区免费| 韩国女主播成人在线| 国产日韩亚洲欧美综合| gogo大胆日本视频一区| 一区二区三区四区蜜桃| 欧美日韩亚洲综合在线| 另类的小说在线视频另类成人小视频在线| 欧美一区二区三区公司| 成熟亚洲日本毛茸茸凸凹| 亚洲视频你懂的| 欧美日韩国产另类不卡| 国产美女娇喘av呻吟久久| 国产精品丝袜在线| 91精品一区二区三区在线观看| 久久综合综合久久综合| 亚洲美女视频一区| 日韩欧美在线综合网| 91丝袜美女网| 日韩高清不卡一区二区三区| 中日韩免费视频中文字幕| 91麻豆精品91久久久久同性| 顶级嫩模精品视频在线看| 日本aⅴ亚洲精品中文乱码| 国产精品伦理一区二区| 制服丝袜中文字幕亚洲| 91国产免费观看| 粉嫩av一区二区三区| 久久国产夜色精品鲁鲁99| 亚洲欧美日韩国产中文在线| 精品国产伦一区二区三区免费 | 欧美日韩一区二区在线观看| 丰满少妇久久久久久久| 久久国产麻豆精品| 日韩国产精品91| 亚洲一区在线观看免费观看电影高清| 欧美精品一区二区三区蜜桃视频| 91官网在线观看| 91精品国产综合久久精品app | 欧美性一区二区| 成人免费视频免费观看| 久久精品噜噜噜成人88aⅴ| 亚洲成人中文在线| 午夜精品久久久久久久| 亚洲国产美国国产综合一区二区| 一区二区三区欧美激情| 亚洲一区在线免费观看| 亚洲激情五月婷婷| 亚洲国产精品久久不卡毛片| 一区二区国产盗摄色噜噜| 亚洲精品五月天| 午夜精品福利视频网站| 免费视频一区二区| 久久99精品国产| 国产美女精品在线| av成人老司机| 欧美图片一区二区三区| 欧洲精品中文字幕| 日韩午夜激情av| 久久精品人人做人人爽人人| 国产精品日产欧美久久久久| 亚洲欧美乱综合| 日韩高清在线一区| 国产精品亚洲а∨天堂免在线| 99久久精品免费| 欧美日韩国产综合一区二区| 欧美一区二区三区在线看| 久久久www成人免费毛片麻豆| 亚洲国产成人午夜在线一区| 亚洲精品国产成人久久av盗摄| 五月激情综合婷婷| 国产69精品久久99不卡| 在线视频国内自拍亚洲视频| 制服丝袜av成人在线看| 国产精品免费人成网站| 日本中文字幕不卡| av在线综合网| 国产亚洲午夜高清国产拍精品 | 天堂在线一区二区| 成人性生交大片免费看中文 | 中文一区一区三区高中清不卡| 亚洲一区二区四区蜜桃| 激情成人午夜视频| 欧美日韩国产首页| 亚洲日本va在线观看| 国内久久精品视频| 91精品国产入口| 亚洲一区视频在线| 91浏览器在线视频| 国产精品国产三级国产aⅴ入口| 久久精品国产精品亚洲红杏| 欧美日韩情趣电影| 亚洲高清免费观看| 欧美在线观看视频一区二区| 国产亚洲va综合人人澡精品| 久久99精品久久久久婷婷| 欧美日韩国产123区| 亚洲成人av一区二区| 欧美日韩在线三区| 日韩电影在线一区二区三区| 在线免费观看日本一区| 亚洲欧美色图小说| 91免费看片在线观看| 亚洲精品亚洲人成人网| 色香蕉成人二区免费| 亚洲精品高清视频在线观看| 色香蕉久久蜜桃| 日本最新不卡在线| 久久色成人在线| 成人av网站在线| 亚洲高清免费视频| 日韩欧美不卡在线观看视频| 美洲天堂一区二卡三卡四卡视频| 制服.丝袜.亚洲.另类.中文| 樱桃视频在线观看一区| 91久久香蕉国产日韩欧美9色| 一区二区三区四区乱视频| 在线一区二区三区四区五区| 欧美韩日一区二区三区四区| 成人精品gif动图一区| 国产精品不卡在线观看| 在线观看视频91| 久久99在线观看| 欧美国产欧美亚州国产日韩mv天天看完整 | 免费观看久久久4p| 欧美mv和日韩mv的网站| 成人黄色在线网站| 亚洲欧美国产毛片在线| 欧美专区在线观看一区| 奇米精品一区二区三区在线观看一| 在线观看免费亚洲| 国内精品视频一区二区三区八戒| 国产视频不卡一区| 欧美丝袜丝交足nylons图片| 国产在线一区二区| 依依成人精品视频| 久久精品亚洲国产奇米99 | 欧美日韩1区2区| 男人的j进女人的j一区| 国产偷国产偷亚洲高清人白洁| 色综合色狠狠综合色|