锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
]]>
涓婚敭鐢卞閮ㄧ▼搴忚礋璐g敓鎴愶紝鏃犻渶Hibernate鍙備笌銆?br />
2) hilo
閫氳繃hi/lo 綆楁硶瀹炵幇鐨勪富閿敓鎴愭満鍒訛紝闇瑕侀澶栫殑鏁版嵁搴撹〃淇濆瓨涓?br />
閿敓鎴愬巻鍙茬姸鎬併?br />
3) seqhilo
涓巋ilo 綾諱技錛岄氳繃hi/lo 綆楁硶瀹炵幇鐨勪富閿敓鎴愭満鍒訛紝鍙槸涓婚敭鍘嗗彶
鐘舵佷繚瀛樺湪Sequence涓紝閫傜敤浜庢敮鎸丼equence鐨勬暟鎹簱錛屽Oracle銆?br />
4) increment
涓婚敭鎸夋暟鍊奸『搴忛掑銆傛鏂瑰紡鐨勫疄鐜版満鍒朵負鍦ㄥ綋鍓嶅簲鐢ㄥ疄渚嬩腑緇存寔
涓涓彉閲忥紝浠ヤ繚瀛樼潃褰撳墠鐨勬渶澶у鹼紝涔嬪悗姣忔闇瑕佺敓鎴愪富閿殑鏃跺?br />
灝嗘鍊煎姞1浣滀負涓婚敭銆?br />
榪欑鏂瑰紡鍙兘浜х敓鐨勯棶棰樻槸錛氬鏋滃綋鍓嶆湁澶氫釜瀹炰緥璁塊棶鍚屼竴涓暟鎹?br />
搴擄紝閭d箞鐢變簬鍚勪釜瀹炰緥鍚勮嚜緇存姢涓婚敭鐘舵侊紝涓嶅悓瀹炰緥鍙兘鐢熸垚鍚屾牱
鐨勪富閿紝浠庤岄犳垚涓婚敭閲嶅寮傚父銆傚洜姝わ紝濡傛灉鍚屼竴鏁版嵁搴撴湁澶氫釜瀹?br />
渚嬭闂紝姝ゆ柟寮忓繀欏婚伩鍏嶄嬌鐢ㄣ?br />
5) identity
閲囩敤鏁版嵁搴撴彁渚涚殑涓婚敭鐢熸垚鏈哄埗銆傚DB2銆丼QL Server銆丮ySQL
涓殑涓婚敭鐢熸垚鏈哄埗銆?br />
6) sequence
閲囩敤鏁版嵁搴撴彁渚涚殑sequence 鏈哄埗鐢熸垚涓婚敭銆傚Oralce 涓殑
Sequence銆?br />
7) native
鐢?span class="hilite1">Hibernate鏍規嵁搴曞眰鏁版嵁搴撹嚜琛屽垽鏂噰鐢╥dentity銆乭ilo銆乻equence
鍏朵腑涓縐嶄綔涓?span class="hilite2">涓婚敭鐢熸垚鏂瑰紡銆?br />
8) uuid.hex
鐢?span class="hilite1">Hibernate鍩轟簬128 浣嶅敮涓鍊間駭鐢熺畻娉曠敓鎴?6 榪涘埗鏁板鹼紙緙栫爜鍚?br />
浠ラ暱搴?2 鐨勫瓧絎︿覆琛ㄧず錛変綔涓轟富閿?br />
9) uuid.string
涓巙uid.hex 綾諱技錛屽彧鏄敓鎴愮殑涓婚敭鏈繘琛岀紪鐮侊紙闀垮害16錛夈傚湪鏌愪簺
鏁版嵁搴撲腑鍙兘鍑虹幇闂錛堝PostgreSQL錛夈?br />
10) foreign
浣跨敤澶栭儴琛ㄧ殑瀛楁浣滀負涓婚敭銆?br />
涓鑸岃█錛屽埄鐢╱uid.hex鏂瑰紡鐢熸垚涓婚敭灝嗘彁渚涙渶濂界殑鎬ц兘鍜屾暟鎹簱騫沖彴閫?br />
搴旀с?br />
鍙﹀鐢變簬甯哥敤鐨勬暟鎹簱錛屽Oracle銆丏B2銆丼QLServer銆丮ySql 絳夛紝閮芥彁
渚涗簡鏄撶敤鐨勪富閿敓鎴愭満鍒訛紙Auto-Increase 瀛楁鎴栬匰equence錛夈傛垜浠彲浠ュ湪鏁?br />
鎹簱鎻愪緵鐨勪富閿敓鎴愭満鍒朵笂錛岄噰鐢╣enerator-class=native鐨?span class="hilite2">涓婚敭鐢熸垚鏂瑰紡銆?br />
涓嶈繃鍊煎緱娉ㄦ剰鐨勬槸錛屼竴浜涙暟鎹簱鎻愪緵鐨勪富閿敓鎴愭満鍒跺湪鏁堢巼涓婃湭蹇呮渶浣籌紝
澶ч噺騫跺彂insert鏁版嵁鏃跺彲鑳戒細寮曡搗琛ㄤ箣闂寸殑浜掗攣銆?br />
鏁版嵁搴撴彁渚涚殑涓婚敭鐢熸垚鏈哄埗錛屽線寰鏄氳繃鍦ㄤ竴涓唴閮ㄨ〃涓繚瀛樺綋鍓嶄富閿姸
鎬侊紙濡傚浜庤嚜澧炲瀷涓婚敭鑰岃█錛屾鍐呴儴琛ㄤ腑灝辯淮鎶ょ潃褰撳墠鐨勬渶澶у煎拰閫掑閲忥級錛?br />
涔嬪悗姣忔鎻掑叆鏁版嵁浼氳鍙栬繖涓渶澶у鹼紝鐒跺悗鍔犱笂閫掑閲忎綔涓烘柊璁板綍鐨勪富閿紝涔?br />
鍚庡啀鎶婅繖涓柊鐨勬渶澶у兼洿鏂板洖鍐呴儴琛ㄤ腑錛岃繖鏍鳳紝涓嬈nsert鎿嶄綔鍙兘瀵艱嚧鏁版嵁
搴撳唴閮ㄥ嬈¤〃璇誨啓鎿嶄綔錛屽悓鏃朵即闅忕殑榪樻湁鏁版嵁鐨勫姞閿佽В閿佹搷浣滐紝榪欏鎬ц兘浜х敓
浜嗚緝澶у獎鍝嶃?br />
鍥犳錛屽浜庡茍鍙慖nsert瑕佹眰杈冮珮鐨勭郴緇燂紝鎺ㄨ崘閲囩敤uuid.hex 浣滀負涓婚敭鐢熸垚
鏈哄埗銆?
]]>
鏇劇粡鏈夎澶氫漢闂搗錛?#8220;鎬庢牱鎵嶈兘‘紱佺敤’嫻忚鍣ㄧ殑鍚庨鎸夐挳錛?#8221;錛屾垨鑰?#8220;鎬庢牱鎵嶈兘闃叉鐢ㄦ埛鐐瑰嚮鍚庨鎸夐挳榪斿洖浠ュ墠嫻忚榪囩殑欏甸潰錛?#8221;鎴戣闂簡璁稿緗戠珯錛屽弬鑰冧簡榪欎簺緗戠珯鎵浠嬬粛鐨勫悇縐嶅疄鐜版柟娉曘傚鏋滀綘緇忓父璁塊棶ASP緙栫▼緗戠珯錛屾湰鏂囨墍浠嬬粛鐨勯儴鍒嗗唴瀹逛綘鍙兘宸茬粡瑙佸埌榪囥傛湰鏂囩殑浠誨姟鏄妸鍚勭鍙兘鐨勬柟娉曢兘浠嬬粛緇欏ぇ瀹訛紝鐒跺悗鎵懼嚭鏈濂界殑鏂規硶錛?nbsp;
浜屻佺姝㈢紦瀛?nbsp;
鍦ㄦ垜鎵懼埌鐨勮澶氭柟妗堜腑錛屽叾涓湁涓縐嶅緩璁姝㈤〉闈㈢紦瀛樸傚叿浣撴槸浣跨敤鏈嶅姟鍣ㄧ鑴氭湰錛屽涓嬫墍紺猴細
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>
榪欑鏂規硶闈炲父鏈夋晥錛佸畠寮哄埗嫻忚鍣ㄩ噸鏂拌闂湇鍔″櫒涓嬭澆欏甸潰錛岃屼笉鏄粠緙撳瓨璇誨彇欏甸潰銆備嬌鐢ㄨ繖縐嶆柟娉曟椂錛岀紪紼嬭呯殑涓昏浠誨姟鏄垱寤轟竴涓細璇濈駭鐨勫彉閲忥紝閫氳繃榪欎釜鍙橀噺紜畾鐢ㄦ埛鏄惁浠嶆棫鍙互鏌ョ湅閭d釜涓嶉傚悎閫氳繃鍚庨鎸夐挳璁塊棶鐨勯〉闈€傜敱浜庢祻瑙堝櫒涓嶅啀緙撳瓨榪欎釜欏甸潰錛屽綋鐢ㄦ埛鐐瑰嚮鍚庨鎸夐挳鏃舵祻瑙堝櫒灝嗛噸鏂頒笅杞借欏甸潰錛屾鏃剁▼搴忓氨鍙互媯鏌ラ偅涓細璇濆彉閲忥紝鐪嬬湅鏄惁搴旇鍏佽鐢ㄦ埛鎵撳紑榪欎釜欏甸潰銆?nbsp;
渚嬪錛屽亣璁炬垜浠湁濡備笅琛ㄥ崟錛?nbsp;
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
If Len(Session("FirstTimeToPage")) > 0 then
"鐢ㄦ埛宸茬粡璁塊棶榪囧綋鍓嶉〉闈紝鐜板湪鏄啀嬈¤繑鍥炶闂?nbsp;
"娓呴櫎浼氳瘽鍙橀噺錛屽皢鐢ㄦ埛閲嶅畾鍚戝埌鐧誨綍欏甸潰銆?nbsp;
Session("FirstTimeToPage") = ""
Response.Redirect "/Bar.asp"
Response.End
End If
"濡傛灉紼嬪簭榪愯鍒拌繖閲岋紝璇存槑鐢ㄦ埛鑳藉鏌ョ湅褰撳墠欏甸潰
"浠ヤ笅寮濮嬪垱寤鴻〃鍗?nbsp;
%>
<form method=post action="SomePage.asp">
<input type=submit>
</form>
鎴戜滑鍊熷姪浼氳瘽鍙橀噺FirstTimeToPage媯鏌ョ敤鎴鋒槸鍚︽槸絎竴嬈¤闂綋鍓嶉〉闈€傚鏋滀笉鏄涓嬈★紙鍗砈ession ("FirstTimeToPage")鍖呭惈鏌愪釜鍊鹼級錛岄偅涔堟垜浠氨娓呴櫎浼氳瘽鍙橀噺鐨勫鹼紝鐒跺悗鎶婄敤鎴烽噸鏂板畾鍚戝埌涓涓紑濮嬮〉闈€傝繖鏍鳳紝褰撹〃鍗曟彁浜ゆ椂錛堟鏃?SompePage.asp琚墦寮錛夛紝鎴戜滑蹇呴』璧嬩簣FirstTimeToPage涓涓箋傚嵆錛屽湪SomePage.asp涓垜浠渶瑕佸姞涓婁笅闈㈢殑浠g爜錛?
Session("FirstTimeToPage") = "NO"
榪欐牱錛屽凡緇忔墦寮SomePage.asp鐨勭敤鎴峰鏋滅偣鍑誨悗閫鎸夐挳錛屾祻瑙堝櫒灝嗛噸鏂拌姹傛湇鍔″櫒涓嬭澆欏甸潰錛屾湇鍔″櫒媯鏌ュ埌Session ("FirstTimeToPage")鍖呭惈浜嗕竴涓鹼紝浜庢槸灝辨竻闄ession("FirstTimeToPage")錛屽茍鎶婄敤鎴烽噸瀹氬悜鍒板叾浠栭〉闈€傚綋鐒訛紝鎵鏈夎繖涓鍒囬兘闇瑕佺敤鎴峰惎鐢ㄤ簡Cookie錛屽惁鍒欎細璇濆彉閲忓皢鏄棤鏁堢殑銆?nbsp;
鍙﹀錛屾垜浠篃鍙互鐢ㄥ鎴風浠g爜浣挎祻瑙堝櫒涓嶅啀緙撳瓨Web欏甸潰錛?nbsp;
<html>
<head>
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
</head>
濡傛灉浣跨敤涓婇潰鐨勬柟娉曞己鍒舵祻瑙堝櫒涓嶅啀緙撳瓨Web欏甸潰錛屽繀欏繪敞鎰忎互涓嬪嚑鐐癸細
鍙湁鍦ㄤ嬌鐢ㄥ畨鍏ㄨ繛鎺ユ椂“Pragma: no-cache”鎵嶉槻姝㈡祻瑙堝櫒緙撳瓨欏甸潰銆傚浜庝笉鍙楀畨鍏ㄤ繚鎶ょ殑欏甸潰錛?#8220;Pragma: no-cache”琚涓轟笌“Expires: -1”鐩稿悓錛屾鏃舵祻瑙堝櫒浠嶆棫緙撳瓨欏甸潰錛屼絾鎶婇〉闈㈡爣璁頒負绔嬪嵆榪囨湡銆?nbsp;
鍦↖E 4鎴?涓紝“Cache-Control”META HTTP-EQUIV鏍囪灝嗚蹇界暐錛屼笉璧蜂綔鐢ㄣ?nbsp;
鍦ㄥ疄闄呭簲鐢ㄤ腑鎴戜滑鍙互鍔犱笂鎵鏈夎繖浜涗唬鐮併傜劧鑰岋紝鐢變簬榪欑鏂規硶涓嶈兘閫傜敤浜庢墍鏈夌殑嫻忚鍣紝鎵浠ユ槸涓嶆帹鑽愪嬌鐢ㄧ殑銆備絾濡傛灉鏄湪Intranet鐜涓嬶紝綆$悊鍛樺彲浠ユ帶鍒剁敤鎴蜂嬌鐢ㄥ摢縐嶆祻瑙堝櫒錛屾垜鎯寵繕鏄湁浜轟細浣跨敤榪欑鏂規硶銆?
涓夈佸叾浠栨柟娉?nbsp;
鎺ヤ笅鏉ユ垜浠璁ㄨ鐨勬柟娉曚互鍚庨鎸夐挳鏈韓涓轟腑蹇冿紝鑰屼笉鏄祻瑙堝櫒緙撳瓨銆傝繖鍎挎湁涓綃囨枃绔燫ewiring the Back Button寰堝煎緱鍙傝冦備笉榪囨垜娉ㄦ剰鍒幫紝濡傛灉浣跨敤榪欑鏂規硶錛岃櫧鐒剁敤鎴風偣鍑諱竴涓嬪悗閫鎸夐挳鏃朵粬涓嶄細鐪嬪埌浠ュ墠杈撳叆鏁版嵁鐨勯〉闈紝浣嗗彧瑕佺偣鍑諱袱嬈″氨鍙互錛岃繖鍙笉鏄垜浠笇鏈涚殑
鏁堟灉錛屽洜涓哄緢澶氭椂鍊欙紝鍥烘墽鐨勭敤鎴鋒繪槸鑳藉鎵懼埌緇曡繃棰勯槻鎺柦鐨勫姙娉曘?nbsp;
鍙﹀涓縐嶇鐢ㄥ悗閫鎸夐挳鐨勫姙娉曟槸鐢ㄥ鎴風JavaScript鎵撳紑涓涓病鏈夊伐鍏鋒潯鐨勭獥鍙o紝榪欎嬌寰楃敤鎴峰緢闅捐繑鍥炲墠涓欏甸潰錛屼絾涓嶆槸涓嶅彲鑳姐備竴縐嶆洿瀹夊叏浣嗙浉褰撴伡浜虹殑鏂規硶鏄紝褰撹〃鍗曟彁浜ゆ椂鎵撳紑涓涓柊鐨勭獥鍙o紝涓庢鍚屾椂鍏抽棴琛ㄥ崟鎵鍦ㄧ殑紿楀彛銆備絾鎴戣寰楄繖縐嶆柟娉曚笉鍊煎緱璁ょ湡鑰冭檻錛屽洜涓烘垜
浠諱笉鑳借鐢ㄦ埛姣忔彁浜や竴涓〃鍗曞氨鎵撳紑涓涓柊紿楀彛銆?nbsp;
閭d箞錛屽湪閭d釜鎴戜滑涓嶆兂璁╃敤鎴瘋繑鍥炵殑欏甸潰鏄惁涔熷彲浠ュ姞鍏avaScript浠g爜鍛紵鍦ㄨ繖涓〉闈腑鍔犲叆鐨凧avaScript浠g爜鍙敤鏉ヤ駭鐢熺偣鍑誨墠榪涙寜閽殑鏁堟灉錛岃繖鏍蜂篃灝辨姷娑堜簡鐢ㄦ埛鐐瑰嚮鍚庨鎸夐挳鎵浜х敓鐨勫姩浣溿傜敤浜庡疄鐜拌鍔熻兘鐨凧avaScript浠g爜濡備笅鎵紺猴細
<script language="JavaScript">
<!--
javascript:window.history.forward(1);
//-->
</script>
鍚屾牱鍦幫紝榪欑鏂規硶铏界劧鏈夋晥錛屼絾璺濈“鏈濂界殑鏂規硶”榪樺樊寰楀緢榪溿傚悗鏉ユ垜鍙堢湅鍒版湁浜哄緩璁敤location.replace浠庝竴涓〉闈㈣漿鍒板彟涓涓〉闈€傝繖縐嶆柟娉曠殑鍘熺悊鏄紝鐢ㄦ柊欏甸潰鐨刄RL鏇挎崲褰撳墠鐨勫巻鍙茬邯褰曪紝榪欐牱嫻忚鍘嗗彶璁板綍涓氨鍙湁涓涓〉闈紝鍚庨鎸夐挳姘歌繙涓嶄細鍙樹負鍙敤銆傛垜鎯寵繖鍙兘姝f槸璁稿浜烘墍瀵繪眰鐨勬柟娉曪紝浣嗚繖縐嶆柟娉曚粛鏃т笉鏄換浣曟儏鍐典笅鐨勬渶濂芥柟娉曘備嬌鐢ㄨ繖縐嶆柟娉曠殑瀹炰緥濡備笅鎵紺猴細
<A HREF="PageName.htm" onclick="javascript:location.replace(this.href); event.returnValue=false; ">
紱佹鍚庨鍒版湰欏甸潰鐨勯摼鎺?nbsp;
璇曡瘯涓嬮潰榪欎釜閾炬帴錛?nbsp;
紱佹鍚庨鍒版湰欏甸潰鐨勯摼鎺ワ紒
榪欑鏂規硶鐨勭己鐐瑰湪浜庯細綆鍗曞湴榪愮敤Response.Redirect灝嗕笉鍐嶆湁鏁堬紝榪欐槸鍥犱負姣忔鐢ㄦ埛浠庝竴涓〉闈㈣漿鍒板彟涓涓〉闈紝鎴戜滑閮藉繀欏葷敤瀹㈡埛绔唬鐮佹竻闄?location.history銆傚彟澶栬繕瑕佹敞鎰忥紝榪欑鏂規硶娓呴櫎鐨勬槸鏈鍚庝竴涓闂巻鍙茶褰曪紝鑰屼笉鏄叏閮ㄧ殑璁塊棶璁板綍銆?nbsp;
鐐瑰嚮涓婇潰鐨勯摼鎺ワ紝浣犲皢鎵撳紑涓涓畝鍗曠殑HTML欏甸潰銆傚啀鐐瑰嚮鍚庨鎸夐挳錛屼綘鍙互鐪嬪埌榪欐椂鎵撳紑鐨勪笉鏄湰欏甸潰錛岃屾槸鏈〉闈箣鍓嶇殑欏甸潰錛侊紙褰撶劧錛屼綘蹇呴』鍦ㄦ祻瑙堝櫒涓惎鐢ㄤ簡瀹㈡埛绔疛avaScript浠g爜銆傦級
緇忚繃涓鐣粩緇嗙殑瀵誨瑙呰涔嬪悗錛屾垜鍙戠幇浠嶆棫鏃犳硶鎵懼嚭鐪熸鑳藉瀹屽叏紱佺敤嫻忚鍣ㄥ悗閫鎸夐挳鐨勫姙娉曘傛墍鏈夎繖閲屼粙緇嶇殑鏂規硶閮借兘澶熷湪涓嶅悓紼嬪害涓娿佷互涓嶅悓鐨勬柟寮忕姝㈢敤鎴瘋繑鍥炲墠涓欏甸潰錛屼絾瀹冧滑閮芥湁鍚勮嚜鐨勫眬闄愩傜敱浜庝笉瀛樺湪鑳藉瀹屽叏紱佺敤鍚庨鎸夐挳鐨勬柟娉曪紝鎵浠ユ渶濂界殑鏂規搴旇鏄細娣峰悎榪愮敤瀹㈡埛绔剼鏈拰鏈嶅姟鍣ㄧ鑴氭湰銆?
]]>
]]>
]]>
]]>
銆銆zip鍘嬬緝鏂囦歡緇撴瀯:涓涓獄ip鏂囦歡鐢卞涓猠ntry緇勬垚,姣忎釜entry鏈変竴涓敮涓鐨勫悕縐?entry鐨勬暟鎹」瀛樺偍鍘嬬緝鏁版嵁銆?
銆銆涓巣ip鏂囦歡鏈夊叧鐨勫嚑涓狫ava綾?
銆銆·綾籞ipEntry
銆銆public ZipEntry(String name);
銆銆name涓烘寚瀹氱殑鏁版嵁欏瑰悕銆?
銆銆·綾籞ipOutputStream
銆銆ZipOutputStream瀹炵幇浜唞ip鍘嬬緝鏂囦歡鐨勫啓杈撳嚭嫻?鏀寔鍘嬬緝鍜岄潪
銆銆public ZipOutputStream(OutputStream out);
銆銆鈭ュ埄鐢ㄨ緭鍑烘祦out鏋勯犱竴涓猌IP杈撳嚭嫻併?
銆銆public void setMethod(int method);
銆銆鈭ヨ緗甧ntry鍘嬬緝鏂規硶,緙虹渷鍊間負DEFLATED銆?
銆銆public void putNextEntry(ZipEntry newe);
銆銆鈭ュ鏋滃綋鍓嶇殑entry瀛樺湪涓斿浜庢縺媧葷姸鎬佹椂,鍏抽棴瀹?鍦▃ip鏂囦歡
涓啓鍏ユ柊鐨別ntry-newe
騫跺皢鏁版嵁嫻佸畾浣嶄簬entry鏁版嵁欏圭殑璧峰浣嶇疆,鍘嬬緝鏂規硶涓簊etMethod鎸?br>瀹氱殑鏂規硶銆?
銆銆·綾籞ipInputStream
銆銆ZipInputStream瀹炵幇浜唞ip鍘嬬緝鏂囦歡鐨勮杈撳叆嫻?鏀寔鍘嬬緝鍜岄潪
鍘嬬緝entry銆備笅闈㈡槸瀹冪殑
鍑犱釜鍑芥暟:
銆銆public ZipInputStream(InputStream in);
銆銆鈭ュ埄鐢ㄨ緭鍏ユ祦in鏋勯犱竴涓猌IP杈撳嚭嫻併?
銆銆public ZipEntry getNextEntry();
銆銆鈭ヨ繑鍥瀂IP鏂囦歡涓殑涓嬩竴涓猠ntry,騫跺皢杈撳嚭嫻佸畾浣嶅湪姝ntry鏁版嵁欏圭殑璧峰浣嶇疆銆?
銆銆public void closeEntry();
銆銆鈭ュ叧闂綋鍓嶇殑zip entry,騫跺皢鏁版嵁嫻佸畾浣嶄簬涓嬩竴涓猠ntry鐨勮搗濮嬩綅緗?
銆銆紼嬪簭浠g爜鍙婂叾娉ㄩ噴
銆銆涓嬪垪鐨勭▼搴忓疄鐜頒簡鏁版嵁鏂囦歡zip鏂瑰紡鐨勫帇緙╁拰瑙e帇緙╂柟娉曘俽andomData()鍑芥暟闅忔満鐢熸垚50涓猟ouble鏁版嵁,騫舵斁鍦╠oc瀛楃涓插彉閲忎腑;openFile()鍑芥暟璇誨彇ZIP鍘嬬緝鏂囦歡;saveFile()鍑芥暟灝嗛殢鏈虹敓鎴愮殑鏁版嵁瀛樺埌ZIP鏍煎紡鐨勫帇緙╂枃浠朵腑銆?
銆銆import java.util.zip.*;
銆銆import java.awt.event.*;
銆銆import java.awt.*;
銆銆import java.lang.Math;
銆銆import java.io.*;
銆銆public class TestZip extends Frame implements
ActionListener {
銆銆TextArea textarea; 鈭ユ樉紺烘暟鎹枃浠剁殑澶氳鏂囨湰鏄劇ず鍩?
銆銆TextField infotip; 鈭ユ樉紺烘暟鎹枃浠舵湭鍘嬬緝澶у皬鍙婂帇緙╁ぇ灝忓崟
琛屾枃鏈樉紺哄煙
銆銆String doc; 鈭ュ瓨鍌ㄩ殢鏈虹敓鎴愮殑鏁版嵁
銆銆long doczipsize = 0;鈭ュ帇緙╂暟鎹枃浠剁殑澶у皬
銆銆public TestZip(){
銆銆鈭ョ敓鎴愯彍鍗?
銆銆MenuBar menubar = new MenuBar();
銆銆setMenuBar(menubar);
銆銆Menu file = new Menu("File",true);
銆銆menubar.add(file);
銆銆MenuItem neww= new MenuItem("New");
銆銆neww.addActionListener(this);
銆銆file.add(neww);
銆銆MenuItem open=new MenuItem("Open");
銆銆open.addActionListener(this);
銆銆file.add(open);
銆銆MenuItem save=new MenuItem("Save");
銆銆save.addActionListener(this);
銆銆file.add(save);
銆銆MenuItem exit=new MenuItem("Exit");
銆銆exit.addActionListener(this);
銆銆file.add(exit);
銆銆鈭ラ殢鏈虹敓鎴愮殑鏁版嵁鏂囦歡鐨勫琛屾枃鏈樉紺哄煙
銆銆add("Center",textarea = new TextArea());
銆銆鈭ユ彁紺烘枃鏈師濮嬪ぇ灝忋佸帇緙╁ぇ灝忕殑鍗曡鏂囨湰鏄劇ず鍩?
銆銆add("South",infotip = new TextField());
銆銆}
銆銆public static void main(String args[]){
銆銆TestZip ok=new TestZip();
銆銆ok.setTitle("zip sample");
銆銆ok.setSize(600,300);
銆銆ok.show();
銆銆}
銆銆private void randomData(){
銆銆鈭ラ殢鏈虹敓鎴?0涓猟ouble鏁版嵁,騫舵斁鍦╠oc瀛楃涓插彉閲忎腑銆?
銆銆doc="";
銆銆for(int i=1;i<51;i++){
銆銆 double rdm=Math.random()*10;
銆銆 doc=doc+new Double(rdm).toString();
銆銆 if(i%5 == 0) doc=doc+"\n";
銆銆 else doc=doc+" ";
銆銆}
銆銆doczipsize = 0;
銆銆showTextandInfo();
銆銆}
銆銆private void openFile(){
銆銆鈭ユ墦寮zip鏂囦歡,灝嗘枃浠跺唴瀹硅鍏oc瀛楃涓插彉閲忎腑銆?
銆銆FileDialog dlg=new
FileDialog(this,"Open",FileDialog.LOA D);
銆銆dlg.show();
銆銆String filename=dlg.getDirectory()+dlg.getFile();
銆銆try{
銆銆鈭ュ垱寤轟竴涓枃浠跺疄渚?
銆銆File f=new File(filename);
銆銆if(!f.exists()) return; 鈭ユ枃浠朵笉瀛樺湪,鍒欒繑鍥?
銆銆鈭ョ敤鏂囦歡杈撳叆嫻佹瀯寤篫IP鍘嬬緝杈撳叆嫻?
銆銆ZipInputStream zipis=new ZipInputStream(new
FileInputStream(f));
銆銆zipis.getNextEntry();
銆銆鈭ュ皢杈撳叆嫻佸畾浣嶅湪褰撳墠entry鏁版嵁欏逛綅緗?
銆銆DataInputStream dis=new DataInputStream(zipis);
銆銆鈭ョ敤ZIP杈撳叆嫻佹瀯寤篋ataInputStream
銆銆doc=dis.readUTF();鈭ヨ鍙栨枃浠跺唴瀹?
銆銆dis.close();鈭ュ叧闂枃浠?
銆銆doczipsize = f.length();鈭ヨ幏鍙朲IP鏂囦歡闀垮害
銆銆showTextandInfo();鈭ユ樉紺烘暟鎹?
銆銆}
銆銆catch(IOException ioe){
銆銆System.out.println(ioe);
銆銆}
銆銆}
銆銆private void saveFile(){
銆銆鈭ユ墦寮zip鏂囦歡,灝哾oc瀛楃涓插彉閲忓啓鍏ip鏂囦歡涓?
銆銆FileDialog dlg=new
FileDialog(this,"Save",FileDialog.SAVE);
銆銆dlg.show();
銆銆String filename=dlg.getDirectory()+dlg.getFile();
銆銆try{
銆銆鈭ュ垱寤轟竴涓枃浠跺疄渚?
銆銆File f=new File(filename);
銆銆if(!f.exists()) return; 鈭ユ枃浠朵笉瀛樺湪,鍒欒繑鍥?
銆銆鈭ョ敤鏂囦歡杈撳嚭嫻佹瀯寤篫IP鍘嬬緝杈撳嚭嫻?
銆銆ZipOutputStream zipos=new ZipOutputStream(new
FileOutputStream(f));
銆銆zipos.setMethod(ZipOutputStream.DEFLATED); 鈭ヨ緗帇緙╂柟
娉?
銆銆zipos.putNextEntry(new ZipEntry("zip"));
銆銆鈭ョ敓鎴愪竴涓猌IP entry,鍐欏叆鏂囦歡杈撳嚭嫻佷腑,騫跺皢杈撳嚭嫻佸畾浣嶄簬
entry璧峰澶勩?
銆銆DataOutputStream os=new DataOutputStream(zipos);
銆銆鈭ョ敤ZIP杈撳嚭嫻佹瀯寤篋ataOutputStream;
銆銆os.writeUTF(doc);鈭ュ皢闅忔満鐢熸垚鐨勬暟鎹啓鍏ユ枃浠朵腑
銆銆os.close();鈭ュ叧闂暟鎹祦
銆銆doczipsize = f.length();
銆銆鈭ヨ幏鍙栧帇緙╂枃浠剁殑闀垮害
銆銆showTextandInfo();鈭ユ樉紺烘暟鎹?
銆銆}
銆銆catch(IOException ioe){
銆銆System.out.println(ioe);
銆銆}
銆銆}
銆銆private void showTextandInfo(){
銆銆鈭ユ樉紺烘暟鎹枃浠跺拰鍘嬬緝淇℃伅
銆銆
textarea.replaceRange(doc,0,textarea.getText().length());
銆銆infotip.setText("uncompressed size:
"+doc.length()+"compressed size: "+dc zipsize);
銆銆}
銆銆public void actionPerformed(ActionEvent e){
銆銆String arg = e.getActionCommand();
銆銆if ("New".equals(arg)) randomData();
銆銆else if ("Open".equals(arg)) openFile();
銆銆else if ("Save".equals(arg)) saveFile();
銆銆else if ("Exit".equals(arg)){
銆銆 dispose();鈭ュ叧闂獥鍙?
銆銆 System.exit(0);鈭ュ叧闂▼搴?
銆銆}
銆銆else {
銆銆 System.out.println("no this command!");
銆銆}
銆銆}
銆銆}