📄 jmfolder.java
字号:
package jm.util;
import java.util.*;
/**
* 俁奒憌僼僅儖僟僣儕乕峔憿偺斈梡僨乕僞儂儖僟僋儔僗<BR>
*<BR>
* <tt>JMFolder</tt>偺崁栚奿擺椺<BR>
*<BR>
* 丂ROOT <tt>..............</tt> Path:"|" [ITEM01,ITEM02]<BR>
* 丂劆<BR>
* 丂劌劅ABC <tt>...........</tt> Path:"|ABC" [ITEM11,ITEM12]<BR>
* 丂劆丂劆<BR>
* 丂劆丂劌劅123456<BR>
* 丂劆丂劆丂劆<BR>
* 丂劆丂劆丂劋劅XYZ <tt>...</tt> Path:"|ABC|123456|XYZ" [ITEM21,ITEM22]<BR>
* 丂劆丂劆<BR>
* 丂劆丂劋劅234567 <tt>....</tt> Path:"|ABC|234567" [ITEM31]<BR>
* 丂劆<BR>
* 丂劋劅DEF <tt>...........</tt> Path:"|DEF" [ITEM_A1,ITEM_A2]<BR>
*<BR>
* 忋婰偺<tt>JMFolder</tt>偺<tt>JMItem</tt>奿擺忬嫷傪埲壓偵帵偡丅<BR>
* 丂ROOT乮僷僗柤丗"|"乯<tt>........................</tt> ITEM01丄ITEM02<BR>
* 丂僼僅儖僟ABC乮僷僗柤丗"|ABC"乯<tt>..............</tt> ITEM11丄ITEM12<BR>
* 丂僼僅儖僟XYZ乮僷僗柤丗"|ABC|123456|XYZ"乯<tt>...</tt> ITEM21丄ITEM22<BR>
* 丂僼僅儖僟234567乮僷僗柤丗"|ABC|234567"乯<tt>....</tt> ITEM31<BR>
* 丂僼僅儖僟DEF乮僷僗柤丗"|DEF"乯<tt>..............</tt> ITEM_A1丄ITEM_A2<BR>
*<BR>
* 崁栚奿擺椺偵帵偟偨傛偆偵丄<tt>FlexFoldef</tt>偺ROOT僼僅儖僟傪娷傓奺僼僅儖僟偵
* 偼暋悢偺<tt>JMItem</tt>僆僽僕僃僋僩傪奿擺偡傞偙偲偑偱偒傞丅<BR>
* <tt>JMItem</tt>僆僽僕僃僋僩偼柤慜傪帩偪丄奺庬僨乕僞宆偺崁栚抣傪曐帩偡傞僆僽
* 僕僃僋僩偱偁傞丅<BR>
*<BR>
* 僼僅儖僟柤偲崁栚柤偼塸悢帤偐傜惉傞暥帤楍偱巜掕偡傞傕偺偲偟丄僼僅儖僟柤傗崁栚
* 柤傪斾妑偡傞応崌偼戝暥帤偲彫暥帤偼摨堦偲傒側偡丅<BR>
* @author fu_changyong(1shome)
* @see jdk1.5.2
* @version 1.5.2.2
*/
public class JMFolder {
private final String CLASS_NAME = "JMFolder";
//////////////////////////////////////////////////////////////////////////
// 僼傿乕儖僪愰尵
/** ROOT僼僅儖僟偺僼僅儖僟僷僗柤傪帵偡暥帤楍 */
public static final String ROOT = "|";
/** 僷僗僙僷儗乕僞傪帵偡暥帤 */
public static final char PATH_SEPARATOR = '|';
/** 嵟戝僼僅儖僟奒憌悢傪帵偡悢抣 */
public static final int MAX_LAYERS = 3;
private String psName; //JMFolder僆僽僕僃僋僩偺柤徧
private String psCurrentFolder; //僇儗儞僩僼僅儖僟偺僼儖僷僗柤
private TreeMap<KeyInfo, Item> poMap; //JMFolder儅僢僾僆僽僕僃僋僩
//////////////////////////////////////////////////////////////////////////
// 僐儞僗僩儔僋僞
/**
* 僐儞僗僩儔僋僞
*/
public JMFolder () {
this("");
}
/**
* <tt>JMFolder</tt>柤徧傪巜掕偡傞応崌偺僐儞僗僩儔僋僞
* @param asName <tt>JMFolder</tt>柤徧
* @throws NullPointerException 僷儔儊乕僞偑 null 偺応崌
*/
public JMFolder (String asName) {
if (asName == null)
throw new NullPointerException();
asName = asName.trim();
psName = asName;
psCurrentFolder = ROOT;
poMap = new TreeMap<KeyInfo, Item>();
}
/**
*
*/
public void clear () {
psCurrentFolder = ROOT;
poMap = new TreeMap<KeyInfo, Item>();
}
/**
* 擖椡僗僩儕乕儉偐傜捈楍壔僨乕僞傪撉傒崬傫偱僆僽僕僃僋僩傪暅尦偡傞偨傔偺
* 僐儞僗僩儔僋僞
* @param aoIn 擖椡僗僩儕乕儉
* @throws Exception 僨乕僞撉傒崬傒拞偵廔抂偵払偟偨応崌丄
* 擖弌椡僄儔乕偑敪惗偟偨応崌丄
* 擖椡僗僩儕乕儉偺撪梕偑晄惓偺応崌
*/
public JMFolder (JMInputStream aoIn) throws Exception {
psName = ""; //JMFolder僆僽僕僃僋僩偺柤徧
psCurrentFolder = ROOT; //僇儗儞僩僼僅儖僟僼儖僷僗柤
poMap = new TreeMap<KeyInfo, Item>(); //JMFolder儅僢僾僆僽僕僃僋僩
deserializeFrom(aoIn);
}
//////////////////////////////////////////////////////////////////////////
// public 儊僜僢僪
/**
* <tt>JMFolder</tt>僆僽僕僃僋僩偺柤徧傪庢摼偡傞丅
* @return <tt>JMFolder</tt>僆僽僕僃僋僩偺柤徧
*/
public String getName () {
return psName;
}
/**
* <tt>JMFolder</tt>僆僽僕僃僋僩偺柤徧傪愝掕偡傞丅
* @param asName <tt>JMFolder</tt>僆僽僕僃僋僩柤
* @throws NullPointerException 僷儔儊乕僞抣偑 null 偺応崌
*/
public void setName (String asName) {
if (asName == null)
throw new NullPointerException();
asName = asName.trim();
psName = asName;
}
/**
* 僇儗儞僩僼僅儖僟偺僷僗柤傪庢摼偡傞丅
* @return 僇儗儞僩僼僅儖僟偺僷僗柤
*/
public String getCurrentFolder () {
return psCurrentFolder;
}
/**
* 僇儗儞僩僼僅儖僟偺僷僗柤傪愝掕偡傞丅<BR>
* 愭摢偑僷僗僙僷儗乕僞暥帤偺応崌偼愨懳僷僗巜掕丄偦偆偱側偗傟偽憡懳僷僗巜掕
* 偲傒側偡丅<BR>
* 僇儗儞僩僼僅儖僟偵愝掕偡傞僷僗柤偼偦偺帪揰偱懚嵼偟偰偄傞昁梫偼側偄丅
* @param 僇儗儞僩僼僅儖僟僷僗柤
* @throws Exception 晄惓側僇儗儞僩僼僅儖僟僷僗柤偑巜掕偝傟偨応崌
*/
public synchronized void setCurrentFolder (String asPath) throws
Exception {
// 愨懳僷僗柤傪庢摼偟丄僇儗儞僩僼僅儖僟僷僗柤偲偡傞
psCurrentFolder = regulatePathName(asPath);
}
/**
* 惓婯壔偝傟偨僷僗柤傪惗惉偡傞丅
* @param as1stFolder 戞侾奒憌僼僅儖僟柤
* pretuen 惓婯壔偝傟偨僷僗柤
*/
public static String makeRegulatedPath (String as1stFolder) {
return makeRegulatedPath(as1stFolder, "", "");
}
/**
* 惓婯壔偝傟偨僷僗柤傪惗惉偡傞丅
* @param as1stFolder 戞侾奒憌僼僅儖僟柤
* @param as2ndFolder 戞俀奒憌僼僅儖僟柤
* pretuen 惓婯壔偝傟偨僷僗柤
*/
public static String makeRegulatedPath (
String as1stFolder,
String as2ndFolder) {
return makeRegulatedPath(as1stFolder, as2ndFolder, "");
}
/**
* 惓婯壔偝傟偨僷僗柤傪惗惉偡傞丅
* @param as1stFolder 戞侾奒憌僼僅儖僟柤
* @param as2ndFolder 戞俀奒憌僼僅儖僟柤
* @param as3rdFolder 戞俁奒憌僼僅儖僟柤
* pretuen 惓婯壔偝傟偨僷僗柤
*/
public static String makeRegulatedPath (
String as1stFolder,
String as2ndFolder,
String as3rdFolder) {
if (as1stFolder == null)
as1stFolder = "";
if (as2ndFolder == null)
as2ndFolder = "";
if (as3rdFolder == null)
as3rdFolder = "";
as1stFolder = as1stFolder.trim();
as2ndFolder = as2ndFolder.trim();
as3rdFolder = as3rdFolder.trim();
StringBuffer zPath = new StringBuffer(256);
zPath.append(PATH_SEPARATOR);
if (as1stFolder.length() > 0) {
zPath.append(as1stFolder);
zPath.append(PATH_SEPARATOR);
if (as2ndFolder.length() > 0) {
zPath.append(as2ndFolder);
zPath.append(PATH_SEPARATOR);
if (as3rdFolder.length() > 0) {
zPath.append(as3rdFolder);
zPath.append(PATH_SEPARATOR);
}
}
}
return zPath.toString();
}
/**
* 巜掕偝傟偨僼僅儖僟偵崁栚柤偲崁栚抣傪巜掕偟偰崁栚僆僽僕僃僋僩傪搊榐偡傞丅
* @param asPath 僼僅儖僟僷僗柤
* @param asName 崁栚柤
* @param ayValue byte 宆崁栚抣
* @throws Exception 晄惓側僼僅儖僟僷僗柤偑巜掕偝傟偨応崌<BR>
* 晄惓側崁栚柤偑巜掕偝傟偨応崌<BR>
* 巜掕僼僅儖僟偵摨堦崁栚柤偺崁栚偑搊榐嵪傒偺応崌
*/
public void addItem (String asPath, String asName, byte ayValue) throws
Exception {
// 愨懳僷僗柤傪庢摼偡傞
String sPath = regulatePathName(asPath);
// 崁栚僆僽僕僃僋僩傪惗惉偡傞
Item oItem = new Item(asName, ayValue);
// 崁栚僆僽僕僃僋僩傪 JMFolder 偵搊榐偡傞
addItemBody(sPath, oItem);
}
/**
* 僇儗儞僩僼僅儖僟偵崁栚柤偲崁栚抣傪巜掕偟偰崁栚僆僽僕僃僋僩傪搊榐偡傞丅
* @param asName 崁栚柤
* @param ayValue byte 宆崁栚抣
* @throws Exception 晄惓側僼僅儖僟僷僗柤偑巜掕偝傟偨応崌<BR>
* 晄惓側崁栚柤偑巜掕偝傟偨応崌<BR>
* 巜掕僼僅儖僟偵摨堦崁栚柤偺崁栚偑搊榐嵪傒偺応崌
*/
public void addItem (String asName, byte ayValue) throws Exception {
addItem(psCurrentFolder, asName, ayValue);
}
/**
* 巜掕偝傟偨僼僅儖僟偵崁栚柤偲崁栚抣傪巜掕偟偰崁栚僆僽僕僃僋僩傪搊榐偡傞丅
* @param asPath 僼僅儖僟僷僗柤
* @param asName 崁栚柤
* @param ahValue short 宆崁栚抣
* @throws Exception 晄惓側僼僅儖僟僷僗柤偑巜掕偝傟偨応崌<BR>
* 晄惓側崁栚柤偑巜掕偝傟偨応崌<BR>
* 巜掕僼僅儖僟偵摨堦崁栚柤偺崁栚偑搊榐嵪傒偺応崌
*/
public void addItem (String asPath, String asName, short ahValue) throws
Exception {
// 愨懳僷僗柤傪庢摼偡傞
String sPath = regulatePathName(asPath);
// 崁栚僆僽僕僃僋僩傪惗惉偡傞
Item oItem = new Item(asName, ahValue);
// 崁栚僆僽僕僃僋僩傪 JMFolder 偵搊榐偡傞
addItemBody(sPath, oItem);
}
/**
* 僇儗儞僩僼僅儖僟偵崁栚柤偲崁栚抣傪巜掕偟偰崁栚僆僽僕僃僋僩傪搊榐偡傞丅
* @param asName 崁栚柤
* @param ahValue short 宆崁栚抣
* @throws Exception 晄惓側僼僅儖僟僷僗柤偑巜掕偝傟偨応崌<BR>
* 晄惓側崁栚柤偑巜掕偝傟偨応崌<BR>
* 巜掕僼僅儖僟偵摨堦崁栚柤偺崁栚偑搊榐嵪傒偺応崌
*/
public void addItem (String asName, short ahValue) throws Exception {
addItem(psCurrentFolder, asName, ahValue);
}
/**
* 巜掕偝傟偨僼僅儖僟偵崁栚柤偲崁栚抣傪巜掕偟偰崁栚僆僽僕僃僋僩傪搊榐偡傞丅
* @param asPath 僼僅儖僟僷僗柤
* @param asName 崁栚柤
* @param aiValue int 宆崁栚抣
* @throws Exception 晄惓側僼僅儖僟僷僗柤偑巜掕偝傟偨応崌<BR>
* 晄惓側崁栚柤偑巜掕偝傟偨応崌<BR>
* 巜掕僼僅儖僟偵摨堦崁栚柤偺崁栚偑搊榐嵪傒偺応崌
*/
public void addItem (String asPath, String asName, int aiValue) throws
Exception {
// 愨懳僷僗柤傪庢摼偡傞
String sPath = regulatePathName(asPath);
// 崁栚僆僽僕僃僋僩傪惗惉偡傞
Item oItem = new Item(asName, aiValue);
// 崁栚僆僽僕僃僋僩傪 JMFolder 偵搊榐偡傞
addItemBody(sPath, oItem);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -