﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Reg-随笔分类-Java</title><link>http://www.blogjava.net/Reg/category/45436.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 22 Dec 2011 15:25:50 GMT</lastBuildDate><pubDate>Thu, 22 Dec 2011 15:25:50 GMT</pubDate><ttl>60</ttl><item><title>Dom4jFactory(读取包含命名空间的XML（支持节点读取不完整）)&lt;font color=red&gt;添加使用实例&lt;/font&gt;</title><link>http://www.blogjava.net/Reg/archive/2011/12/14/366351.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Wed, 14 Dec 2011 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2011/12/14/366351.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/366351.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2011/12/14/366351.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/366351.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/366351.html</trackback:ping><description><![CDATA[
<div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;java.util.HashMap;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;java.util.List;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;java.util.Map;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.dom4j.Document;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.dom4j.DocumentException;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.dom4j.Element;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.dom4j.XPath;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;org.dom4j.io.SAXReader;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img id="Codehighlighter1_217_300_Open_Image" onclick="this.style.display='none'; Codehighlighter1_217_300_Open_Text.style.display='none'; Codehighlighter1_217_300_Closed_Image.style.display='inline'; Codehighlighter1_217_300_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none;" id="Codehighlighter1_217_300_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_217_300_Closed_Text.style.display='none'; Codehighlighter1_217_300_Open_Image.style.display='inline'; Codehighlighter1_217_300_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_217_300_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_217_300_Open_Text"><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;读取有命名空间的XML（支持节点读取不完整）<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);">&nbsp;Ai&nbsp;Bo<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;*&nbsp;</span><span style="color: rgb(128, 128, 128);">@version</span><span style="color: rgb(0, 128, 0);">&nbsp;1.3.1&nbsp;Date&nbsp;2011-12-14<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span></span><span style="color: rgb(0, 0, 0);"><br />
<img id="Codehighlighter1_328_1205_Open_Image" onclick="this.style.display='none'; Codehighlighter1_328_1205_Open_Text.style.display='none'; Codehighlighter1_328_1205_Closed_Image.style.display='inline'; Codehighlighter1_328_1205_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none;" id="Codehighlighter1_328_1205_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_328_1205_Closed_Text.style.display='none'; Codehighlighter1_328_1205_Open_Image.style.display='inline'; Codehighlighter1_328_1205_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Dom4jFactory&nbsp;</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_328_1205_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_328_1205_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;SAXReader&nbsp;reader&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;SAXReader();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;Document&nbsp;document;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;Element&nbsp;root;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;Map</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">String,&nbsp;String</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;xmlMap&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;HashMap</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">String,&nbsp;String</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_544_795_Open_Image" onclick="this.style.display='none'; Codehighlighter1_544_795_Open_Text.style.display='none'; Codehighlighter1_544_795_Closed_Image.style.display='inline'; Codehighlighter1_544_795_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none;" id="Codehighlighter1_544_795_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_544_795_Closed_Text.style.display='none'; Codehighlighter1_544_795_Open_Image.style.display='inline'; Codehighlighter1_544_795_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Dom4jFactory(String&nbsp;path)&nbsp;</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_544_795_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_544_795_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">super</span><span style="color: rgb(0, 0, 0);">();<br />
<img id="Codehighlighter1_563_734_Open_Image" onclick="this.style.display='none'; Codehighlighter1_563_734_Open_Text.style.display='none'; Codehighlighter1_563_734_Closed_Image.style.display='inline'; Codehighlighter1_563_734_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none;" id="Codehighlighter1_563_734_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_563_734_Closed_Text.style.display='none'; Codehighlighter1_563_734_Open_Image.style.display='inline'; Codehighlighter1_563_734_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_563_734_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_563_734_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;reader.read(path);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;document.getRootElement();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;defaultNamespace&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;root.getNamespaceURI();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlMap.put(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">default</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;defaultNamespace);<br />
<img id="Codehighlighter1_764_792_Open_Image" onclick="this.style.display='none'; Codehighlighter1_764_792_Open_Text.style.display='none'; Codehighlighter1_764_792_Closed_Image.style.display='inline'; Codehighlighter1_764_792_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none;" id="Codehighlighter1_764_792_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_764_792_Closed_Text.style.display='none'; Codehighlighter1_764_792_Open_Image.style.display='inline'; Codehighlighter1_764_792_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);">&nbsp;(DocumentException&nbsp;e)&nbsp;</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_764_792_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_764_792_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_849_984_Open_Image" onclick="this.style.display='none'; Codehighlighter1_849_984_Open_Text.style.display='none'; Codehighlighter1_849_984_Closed_Image.style.display='inline'; Codehighlighter1_849_984_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none;" id="Codehighlighter1_849_984_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_849_984_Closed_Text.style.display='none'; Codehighlighter1_849_984_Open_Image.style.display='inline'; Codehighlighter1_849_984_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;List</span><span style="color: rgb(0, 0, 0);">&lt;?&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;getSelectNodes(String&nbsp;arg0)&nbsp;</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_849_984_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_849_984_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XPath&nbsp;selector&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;root.createXPath(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">//default:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;arg0);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selector.setNamespaceURIs(xmlMap);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;selector.selectNodes(root);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">unchecked</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)<br />
<img id="Codehighlighter1_1062_1203_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1062_1203_Open_Text.style.display='none'; Codehighlighter1_1062_1203_Closed_Image.style.display='inline'; Codehighlighter1_1062_1203_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none;" id="Codehighlighter1_1062_1203_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1062_1203_Closed_Text.style.display='none'; Codehighlighter1_1062_1203_Open_Image.style.display='inline'; Codehighlighter1_1062_1203_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">T</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;T&nbsp;getSelectObject(String&nbsp;arg0)</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_1062_1203_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1062_1203_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: rgb(0, 0, 0);">&lt;?&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;selectNodes&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;getSelectNodes(arg0);<br />
<img id="Codehighlighter1_1137_1175_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1137_1175_Open_Text.style.display='none'; Codehighlighter1_1137_1175_Closed_Image.style.display='inline'; Codehighlighter1_1137_1175_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none;" id="Codehighlighter1_1137_1175_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1137_1175_Closed_Text.style.display='none'; Codehighlighter1_1137_1175_Open_Image.style.display='inline'; Codehighlighter1_1137_1175_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(selectNodes.size()</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_1137_1175_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1137_1175_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;(T)&nbsp;selectNodes.get(</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">);<br />
<img id="Codehighlighter1_1180_1200_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1180_1200_Open_Text.style.display='none'; Codehighlighter1_1180_1200_Closed_Image.style.display='inline'; Codehighlighter1_1180_1200_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none;" id="Codehighlighter1_1180_1200_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1180_1200_Closed_Text.style.display='none'; Codehighlighter1_1180_1200_Open_Image.style.display='inline'; Codehighlighter1_1180_1200_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 255);">else</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_1180_1200_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1180_1200_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p>&nbsp;XML文件:</p><div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">inputs&nbsp;</span><span style="color: rgb(255, 0, 0);">xmlns</span><span style="color: rgb(0, 0, 255);">="http://input.abio.com.cn"</span><span style="color: rgb(255, 0, 0);">&nbsp;xmlns:xsi</span><span style="color: rgb(0, 0, 255);">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: rgb(255, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: rgb(0, 0, 255);">="http://input.abio.com.cn&nbsp;http://www.abio.com.cn/sproinput.xsd"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">columns</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">columns</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="id"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="String"</span><span style="color: rgb(255, 0, 0);">&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="1"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="32"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="数据代码"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(255, 0, 0);">&nbsp;gridwidth</span><span style="color: rgb(0, 0, 255);">="3"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="organNo"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="integer"</span><span style="color: rgb(255, 0, 0);">&nbsp;nullable</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);">&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="1"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="20"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="机构编号"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="organName"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="String"</span><span style="color: rgb(255, 0, 0);">&nbsp;nullable</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);">&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="1"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="20"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="机构名称"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="pOrganNo"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="String"</span><span style="color: rgb(255, 0, 0);">&nbsp;nullable</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);">&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="1"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="20"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="父机构编号"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="effTime"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="Date"</span><span style="color: rgb(255, 0, 0);">&nbsp;validator</span><span style="color: rgb(0, 0, 255);">="Date"</span><span style="color: rgb(255, 0, 0);">&nbsp;nullable</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);">&nbsp;format</span><span style="color: rgb(0, 0, 255);">="yyyy-MM-dd"</span><span style="color: rgb(255, 0, 0);">&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="8"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="8"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="有效日期"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="date"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="createUser"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="String"</span><span style="color: rgb(255, 0, 0);">&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="1"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="20"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="创建人"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="createTime"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="Date"</span><span style="color: rgb(255, 0, 0);">&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="10"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="20"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="创建日期"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="updateUser"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="String"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="1"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="20"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="更新人"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="updateTime"</span><span style="color: rgb(255, 0, 0);">&nbsp;&nbsp;datatype</span><span style="color: rgb(0, 0, 255);">="Date"</span><span style="color: rgb(255, 0, 0);">&nbsp;minlen</span><span style="color: rgb(0, 0, 255);">="10"</span><span style="color: rgb(255, 0, 0);">&nbsp;maxlen</span><span style="color: rgb(0, 0, 255);">="20"</span><span style="color: rgb(255, 0, 0);">&nbsp;casetype</span><span style="color: rgb(0, 0, 255);">="U"</span><span style="color: rgb(255, 0, 0);">&nbsp;width</span><span style="color: rgb(0, 0, 255);">="40"</span><span style="color: rgb(255, 0, 0);">&nbsp;name_zh</span><span style="color: rgb(0, 0, 255);">="更新日期"</span><span style="color: rgb(255, 0, 0);">&nbsp;editable</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(255, 0, 0);">&nbsp;inputtype</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">input</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">inputs</span><span style="color: rgb(0, 0, 255);">&gt;</span></div><p>读取XML单个节点（inputs下的columns节点）:</p><div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: rgb(0, 0, 0);">Dom4jFactory&nbsp;df&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Dom4jFactory(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">c:\\test.xml</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultElement&nbsp;columnsitem&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;df.getSelectObject(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">columns</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);</span></div><p>读取XML inputs节点下所有的input节点：</p><div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 0, 0);">Dom4jFactory&nbsp;df&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Dom4jFactory(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">c:\\test.xml</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">DefaultElement</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;inputNodes&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;df.getSelectNodes(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">input</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);</span></div><p><br /><br /><br />&nbsp;</p>
<img src ="http://www.blogjava.net/Reg/aggbug/366351.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2011-12-14 16:39 <a href="http://www.blogjava.net/Reg/archive/2011/12/14/366351.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Java api 全集 【API JDK1.6中文版】</title><link>http://www.blogjava.net/Reg/archive/2011/03/15/346310.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Tue, 15 Mar 2011 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2011/03/15/346310.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/346310.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2011/03/15/346310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/346310.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/346310.html</trackback:ping><description><![CDATA[J2SE DK <span style="color: rgb(0,0,204)">&amp;</span> API下载<br />
-------------------------<br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>j2se<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>3<span style="color: rgb(0,0,204)">/</span>download<span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,255)">html</span><br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>j2se<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>4<span style="color: rgb(0,0,204)">.</span>2<span style="color: rgb(0,0,204)">/</span>download<span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,255)">html</span><br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>javase<span style="color: rgb(0,0,204)">/</span>downloads<span style="color: rgb(0,0,204)">/</span>index_jdk5<span style="color: rgb(0,0,204)">.</span>jsp<br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>javase<span style="color: rgb(0,0,204)">/</span>downloads<span style="color: rgb(0,0,204)">/</span>index<span style="color: rgb(0,0,204)">.</span>jsp<br />
J2EE DK <span style="color: rgb(0,0,204)">&amp;</span> API下载 <br />
-------------------------<br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>j2ee<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>3<span style="color: rgb(0,0,204)">/</span>index<span style="color: rgb(0,0,204)">.</span>jsp<br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>j2ee<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>3<span style="color: rgb(0,0,204)">/</span>download<span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,255)">html</span><br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>j2ee<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>4<span style="color: rgb(0,0,204)">/</span>index<span style="color: rgb(0,0,204)">.</span>jsp<br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>j2ee<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>4<span style="color: rgb(0,0,204)">/</span>download<span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,255)">html</span><br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>javaee<span style="color: rgb(0,0,204)">/</span>downloads<span style="color: rgb(0,0,204)">/</span>index<span style="color: rgb(0,0,204)">.</span>jsp<br />
JDK1<span style="color: rgb(0,0,204)">.</span>6API中文版（全）<br />
-------------------------<br />
<span style="color: rgb(0,0,204)">*</span> <span style="color: rgb(0,0,255)">HTML</span> 格式<span style="color: rgb(0,0,204)">(</span>在线英文<span style="color: rgb(0,0,204)">)</span> http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>javase<span style="color: rgb(0,0,204)">/</span>6<span style="color: rgb(0,0,204)">/</span>docs<span style="color: rgb(0,0,204)">/</span><br />
<span style="color: rgb(0,0,204)">*</span> <span style="color: rgb(0,0,255)">HTML</span> 格式<span style="color: rgb(0,0,204)">(</span>在线中文<span style="color: rgb(0,0,204)">)</span> http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>download<span style="color: rgb(0,0,204)">.</span>java<span style="color: rgb(0,0,204)">.</span>net<span style="color: rgb(0,0,204)">/</span>jdk<span style="color: rgb(0,0,204)">/</span>jdk-api-localizations<span style="color: rgb(0,0,204)">/</span>jdk-api-zh-cn<span style="color: rgb(0,0,204)">/</span>publish<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>6<span style="color: rgb(0,0,204)">.</span>0<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,255)">html</span><span style="color: rgb(0,0,204)">/</span>zh_CN<span style="color: rgb(0,0,204)">/</span>api<span style="color: rgb(0,0,204)">/</span>index<span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,255)">html</span><br />
<span style="color: rgb(0,0,204)">*</span> zip 格式<span style="color: rgb(0,0,204)">(</span>中文<span style="color: rgb(0,0,204)">)</span> http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>download<span style="color: rgb(0,0,204)">.</span>java<span style="color: rgb(0,0,204)">.</span>net<span style="color: rgb(0,0,204)">/</span>jdk<span style="color: rgb(0,0,204)">/</span>jdk-api-localizations<span style="color: rgb(0,0,204)">/</span>jdk-api-zh-cn<span style="color: rgb(0,0,204)">/</span>publish<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>6<span style="color: rgb(0,0,204)">.</span>0<span style="color: rgb(0,0,204)">/</span>html_zh_CN<span style="color: rgb(0,0,204)">.</span>zip<br />
<span style="color: rgb(0,0,204)">*</span> CHM 格式<span style="color: rgb(0,0,204)">(</span>中文<span style="color: rgb(0,0,204)">)</span> http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>download<span style="color: rgb(0,0,204)">.</span>java<span style="color: rgb(0,0,204)">.</span>net<span style="color: rgb(0,0,204)">/</span>jdk<span style="color: rgb(0,0,204)">/</span>jdk-api-localizations<span style="color: rgb(0,0,204)">/</span>jdk-api-zh-cn<span style="color: rgb(0,0,204)">/</span>publish<span style="color: rgb(0,0,204)">/</span>1<span style="color: rgb(0,0,204)">.</span>6<span style="color: rgb(0,0,204)">.</span>0<span style="color: rgb(0,0,204)">/</span>chm<span style="color: rgb(0,0,204)">/</span>JDK_API_1_6_zh_CN<span style="color: rgb(0,0,204)">.</span>CHM <br />
JDK1<span style="color: rgb(0,0,204)">.</span>5API中文版（全）<br />
-------------------------<br />
<span style="color: rgb(0,0,204)">*</span> <span style="color: rgb(0,0,255)">HTML</span> 格式<span style="color: rgb(0,0,204)">(</span>在线英文<span style="color: rgb(0,0,204)">)</span> http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>javase<span style="color: rgb(0,0,204)">/</span>5<span style="color: rgb(0,0,204)">/</span>docs<span style="color: rgb(0,0,204)">/</span><br />
<span style="color: rgb(0,0,204)">*</span> <span style="color: rgb(0,0,255)">HTML</span> 格式<span style="color: rgb(0,0,204)">(</span>在线中文<span style="color: rgb(0,0,204)">)</span> http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>gceclub<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">.</span>cn<span style="color: rgb(0,0,204)">/</span>Java_Docs<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,255)">html</span><span style="color: rgb(0,0,204)">/</span>zh_CN<span style="color: rgb(0,0,204)">/</span>api<span style="color: rgb(0,0,204)">/</span>index<span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,255)">html</span><br />
<span style="color: rgb(0,0,204)">*</span> zip 格式<span style="color: rgb(0,0,204)">(</span>中文<span style="color: rgb(0,0,204)">)</span> http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>gceclub<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">.</span>cn<span style="color: rgb(0,0,204)">/</span>Java_Docs<span style="color: rgb(0,0,204)">/</span>html_zh_CN<span style="color: rgb(0,0,204)">.</span>zip<br />
<span style="color: rgb(0,0,204)">*</span> CHM 格式<span style="color: rgb(0,0,204)">(</span>中文<span style="color: rgb(0,0,204)">)</span> http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>download<span style="color: rgb(0,0,204)">.</span>java<span style="color: rgb(0,0,204)">.</span>net<span style="color: rgb(0,0,204)">/</span>jdk<span style="color: rgb(0,0,204)">/</span>jdk-api-localizations<span style="color: rgb(0,0,204)">/</span>jdk-api-zh-cn<span style="color: rgb(0,0,204)">/</span>builds<span style="color: rgb(0,0,204)">/</span>JDK_API_1_5_zh_CN<span style="color: rgb(0,0,204)">.</span>CHM<br />
<br />
相关网站<br />
-------------------------<br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>gceclub<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">.</span>cn<span style="color: rgb(0,0,204)">/</span><br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>developers<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>downloads<span style="color: rgb(0,0,204)">/</span><br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>javaee<span style="color: rgb(0,0,204)">/</span>downloads<span style="color: rgb(0,0,204)">/</span><br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>java<span style="color: rgb(0,0,204)">.</span>sun<span style="color: rgb(0,0,204)">.</span>com<span style="color: rgb(0,0,204)">/</span>javase<span style="color: rgb(0,0,204)">/</span>downloads<span style="color: rgb(0,0,204)">/</span><br />
http:<span style="color: rgb(0,0,204)">/</span><span style="color: rgb(0,0,204)">/</span>www<span style="color: rgb(0,0,204)">.</span>netbeans<span style="color: rgb(0,0,204)">.</span><span style="color: rgb(255,0,0)">info</span><span style="color: rgb(0,0,204)">/</span>downloads<span style="color: rgb(0,0,204)">/</span><br />
<img src ="http://www.blogjava.net/Reg/aggbug/346310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2011-03-15 14:37 <a href="http://www.blogjava.net/Reg/archive/2011/03/15/346310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 文件压缩</title><link>http://www.blogjava.net/Reg/archive/2010/11/25/339033.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Thu, 25 Nov 2010 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/11/25/339033.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/339033.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/11/25/339033.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/339033.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/339033.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cn;&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.BufferedInputStream;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.File;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileInputStream;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileOutputStream;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.zip.CRC32;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.zip.CheckedOutputStream;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.zip.ZipEntry;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.zip.ZipOutputStream;&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ZipCompressor&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;BUFFER&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">8192</span><span style="color: #000000">;&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;File&nbsp;zipFile;&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ZipCompressor(String&nbsp;pathName)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zipFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(pathName);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;compress(String&nbsp;srcPathName)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(srcPathName);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">file.exists())&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RuntimeException(srcPathName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">不存在！</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;fileOutputStream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(zipFile);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckedOutputStream&nbsp;cos&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CheckedOutputStream(fileOutputStream,&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CRC32());&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZipOutputStream&nbsp;out&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ZipOutputStream(cos);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;basedir&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compress(file,&nbsp;out,&nbsp;basedir);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RuntimeException(e);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;compress(File&nbsp;file,&nbsp;ZipOutputStream&nbsp;out,&nbsp;String&nbsp;basedir)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;判断是目录还是文件&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(file.isDirectory())&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">压缩：</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;basedir&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;file.getName());&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.compressDirectory(file,&nbsp;out,&nbsp;basedir);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">压缩：</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;basedir&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;file.getName());&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.compressFile(file,&nbsp;out,&nbsp;basedir);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">&nbsp;压缩一个目录&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;compressDirectory(File&nbsp;dir,&nbsp;ZipOutputStream&nbsp;out,&nbsp;String&nbsp;basedir)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">dir.exists())&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File[]&nbsp;files&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dir.listFiles();&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;files.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;递归&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compress(files[i],&nbsp;out,&nbsp;basedir&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;dir.getName()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">&nbsp;压缩一个文件&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;compressFile(File&nbsp;file,&nbsp;ZipOutputStream&nbsp;out,&nbsp;String&nbsp;basedir)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">file.exists())&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedInputStream&nbsp;bis&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedInputStream(&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(file));&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZipEntry&nbsp;entry&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ZipEntry(basedir&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;file.getName());&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.putNextEntry(entry);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;count;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">&nbsp;data[]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[BUFFER];&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;((count&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;bis.read(data,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;BUFFER))&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(data,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;count);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bis.close();&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RuntimeException(e);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">測試是否可以壓縮</span><span style="color: #008000">*/</span><span style="color: #000000">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZipCompressor&nbsp;zc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ZipCompressor(</span><span style="color: #000000">"</span><span style="color: #000000">E:\\szhzip.zip</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zc.compress(</span><span style="color: #000000">"</span><span style="color: #000000">E:\\test</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">OK<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
}&nbsp;&nbsp;&nbsp;</span></div>
<img src ="http://www.blogjava.net/Reg/aggbug/339033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-11-25 16:07 <a href="http://www.blogjava.net/Reg/archive/2010/11/25/339033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA中LISt遍历时如何remove元素</title><link>http://www.blogjava.net/Reg/archive/2010/11/15/338087.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Mon, 15 Nov 2010 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/11/15/338087.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/338087.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/11/15/338087.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/338087.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/338087.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<br />
　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;object&nbsp;{<br />
<br />
　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
<br />
　　String&nbsp;str1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
　　String&nbsp;str2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
　　String&nbsp;str3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
　　String&nbsp;str4&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
　　String&nbsp;str5&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
　　List&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList();<br />
<br />
　　list.add(str1);<br />
<br />
　　list.add(str2);<br />
<br />
　　list.add(str3);<br />
<br />
　　list.add(str4);<br />
<br />
　　list.add(str5);<br />
<br />
　　System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">list.size()=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;list.size());<br />
<br />
　　</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;list.size();&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
<br />
　　</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(((String)&nbsp;list.get(i)).startsWith(</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{<br />
<br />
　　list.remove(i);<br />
<br />
　　}<br />
<br />
　　运行结果不是：<br />
<br />
　　list.size()</span><span style="color: #000000">=</span><span style="color: #000000">5</span><span style="color: #000000"><br />
<br />
　　after&nbsp;remove:list.size()</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000"><br />
<br />
　　居然是：<br />
<br />
　　list.size()</span><span style="color: #000000">=</span><span style="color: #000000">5</span><span style="color: #000000"><br />
<br />
　　after&nbsp;remove:list.size()</span><span style="color: #000000">=</span><span style="color: #000000">2</span><span style="color: #000000"><br />
<br />
　　原因：List每remove掉一个元素以后，后面的元素都会向前移动，此时如果执行i</span><span style="color: #000000">=</span><span style="color: #000000">i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">，则刚刚移过来的元素没有被读取。<br />
<br />
　　解决方法：<br />
<br />
　　</span><span style="color: #000000">1</span><span style="color: #000000">.倒过来遍历list<br />
<br />
　　</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;list.size()</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">--</span><span style="color: #000000">)&nbsp;{<br />
<br />
　　</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(((String)&nbsp;list.get(i)).startsWith(</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{<br />
<br />
　　list.remove(i);<br />
<br />
　　}<br />
<br />
　　}<br />
<br />
　　</span><span style="color: #000000">2</span><span style="color: #000000">.每移除一个元素以后再把i移回来<br />
<br />
　　</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;list.size();&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
<br />
　　</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(((String)&nbsp;list.get(i)).startsWith(</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{<br />
<br />
　　list.remove(i);<br />
<br />
　　i</span><span style="color: #000000">=</span><span style="color: #000000">i</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
<br />
　　}<br />
<br />
　　}<br />
<br />
　　</span><span style="color: #000000">3</span><span style="color: #000000">.使用iterator.remove()方法删除<br />
<br />
　　</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(Iterator&nbsp;it&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;list.iterator();&nbsp;it.hasNext();)&nbsp;{<br />
<br />
　　String&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(String)it.next();<br />
<br />
　　</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(str.equals(</span><span style="color: #000000">"</span><span style="color: #000000">chengang</span><span style="color: #000000">"</span><span style="color: #000000">)){<br />
<br />
　　it.remove();<br />
<br />
　　}<br />
<br />
　　}<br />
<br />
　　}<br />
<br />
　　System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">after&nbsp;remove:list.size()=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;list.size());<br />
<br />
　　}<br />
<br />
　　}</span></div>
<img src ="http://www.blogjava.net/Reg/aggbug/338087.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-11-15 13:56 <a href="http://www.blogjava.net/Reg/archive/2010/11/15/338087.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java生成上传图片的缩略图</title><link>http://www.blogjava.net/Reg/archive/2010/08/29/330186.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Sun, 29 Aug 2010 08:32:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/08/29/330186.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/330186.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/08/29/330186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/330186.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/330186.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">1</span><span style="color: #000000">.</span><span style="color: #008000">//</span><span style="color: #008000">pizza&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">2</span><span style="color: #000000">.</span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">3</span><span style="color: #000000">.&nbsp;&nbsp;<br />
</span><span style="color: #000000">4</span><span style="color: #000000">.</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileOutputStream;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">5</span><span style="color: #000000">.&nbsp;&nbsp;<br />
</span><span style="color: #000000">6</span><span style="color: #000000">.&nbsp;&nbsp;<br />
</span><span style="color: #000000">7</span><span style="color: #000000">.&nbsp;&nbsp;<br />
</span><span style="color: #000000">8</span><span style="color: #000000">.</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ToImg&nbsp;{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">9</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">10</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toSmaillImg(</span><span style="color: #000000">"</span><span style="color: #000000">untitled.bmp</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">thumb.bmp</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">11</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">12</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">13</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;toSmaillImg(String&nbsp;filePath,String&nbsp;thumbPath)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">14</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;newurl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">thumbPath;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">15</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.awt.Image&nbsp;bigJpg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;javax.imageio.ImageIO.read(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;java.io.File(filePath));&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">16</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">float</span><span style="color: #000000">&nbsp;tagsize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">100</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">17</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;old_w&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;bigJpg.getWidth(</span><span style="color: #0000ff">null</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">18</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;old_h&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;bigJpg.getHeight(</span><span style="color: #0000ff">null</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">19</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;new_w&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">20</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;new_h&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">21</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">float</span><span style="color: #000000">&nbsp;tempdouble;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">22</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempdouble&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;old_w&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;old_h&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;old_w</span><span style="color: #000000">/</span><span style="color: #000000">tagsize&nbsp;:&nbsp;old_h</span><span style="color: #000000">/</span><span style="color: #000000">tagsize;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">23</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_w&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Math.round(old_w</span><span style="color: #000000">/</span><span style="color: #000000">tempdouble);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">24</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_h&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Math.round(old_h</span><span style="color: #000000">/</span><span style="color: #000000">tempdouble);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">25</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.awt.image.BufferedImage&nbsp;tag&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;java.awt.image.BufferedImage(new_w,new_h,java.awt.image.BufferedImage.TYPE_INT_RGB);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">26</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag.getGraphics().drawImage(bigJpg,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">,new_w,new_h,</span><span style="color: #0000ff">null</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">27</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;newimage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(newurl);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">28</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.sun.image.codec.jpeg.JPEGImageEncoder&nbsp;encoder&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(newimage);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">29</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encoder.encode(tag);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">30</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newimage.close();&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">31</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000">32</span><span style="color: #000000">.}&nbsp;&nbsp;</span></div>
<img src ="http://www.blogjava.net/Reg/aggbug/330186.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-08-29 16:32 <a href="http://www.blogjava.net/Reg/archive/2010/08/29/330186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP上传图片并自动生成缩略图</title><link>http://www.blogjava.net/Reg/archive/2010/08/29/330185.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Sun, 29 Aug 2010 08:25:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/08/29/330185.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/330185.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/08/29/330185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/330185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/330185.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">JSP上传图片并生成缩略图<br />
<br />
本例子使用了jspsmart组件进行上传，这里可以免费下载该组件www.jspsmart.com<br />
下载解压后，将jar包复制到　\WEB</span><span style="color: #000000">-</span><span style="color: #000000">INF\lib　目录后重启服务器，jspsmart即可正常使用了<br />
<br />
</span><span style="color: #000000">1</span><span style="color: #000000">、uploadimage.jsp<br />
<br />
</span><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;contentType</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/html;charset=gb2312</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;language</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*,cn.oof.database.*,cn.oof.house.*</span><span style="color: #000000">"</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;%</span><span style="color: #000000"><br />
SmartUpload&nbsp;mySmartUpload&nbsp;</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SmartUpload();<br />
</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;file_size_max</span><span style="color: #000000">=</span><span style="color: #000000">4000000</span><span style="color: #000000">;<br />
String&nbsp;fileName2</span><span style="color: #000000">=</span><span style="color: #000000">""</span><span style="color: #000000">,ext</span><span style="color: #000000">=</span><span style="color: #000000">""</span><span style="color: #000000">,testvar</span><span style="color: #000000">=</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
String&nbsp;url</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">uploadfile/images/</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">应保证在根目录中有此目录的存在<br />
</span><span style="color: #008000">//</span><span style="color: #008000">初始化</span><span style="color: #008000"><br />
</span><span style="color: #000000">mySmartUpload.initialize(pageContext);<br />
</span><span style="color: #008000">//</span><span style="color: #008000">只允许上载此类文件</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;mySmartUpload.setAllowedFilesList(</span><span style="color: #000000">"</span><span style="color: #000000">jpg,gif</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008000">//</span><span style="color: #008000">上载文件&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;mySmartUpload.upload();<br />
}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e){<br />
</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">SCRIPT&nbsp;language</span><span style="color: #000000">=</span><span style="color: #000000">javascript</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">只允许上传.jpg和.gif类型图片文件</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;window.location</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">upfile.jsp</span><span style="color: #000000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;%</span><span style="color: #000000"><br />
}<br />
</span><span style="color: #0000ff">try</span><span style="color: #000000">{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;com.jspsmart.upload.File&nbsp;myFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;mySmartUpload.getFiles().getFile(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(myFile.isMissing()){</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">SCRIPT&nbsp;language</span><span style="color: #000000">=</span><span style="color: #000000">javascript</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">请先选择要上传的文件</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;window.location</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">upfile.jsp</span><span style="color: #000000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;%</span><span style="color: #000000">}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">String&nbsp;myFileName=myFile.getFileName();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">取得上载的文件的文件名</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;ext</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;myFile.getFileExt();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">取得后缀名</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;file_size</span><span style="color: #000000">=</span><span style="color: #000000">myFile.getSize();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">取得文件的大小&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;String&nbsp;saveurl</span><span style="color: #000000">=</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(file_size</span><span style="color: #000000">&lt;</span><span style="color: #000000">file_size_max){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">更改文件名，取得当前上传时间的毫秒数值</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;calendar&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calendar.getInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;filename&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;String.valueOf(calendar.getTimeInMillis());&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;saveurl</span><span style="color: #000000">=</span><span style="color: #000000">request.getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">url;<br />
&nbsp;&nbsp;&nbsp;&nbsp;saveurl</span><span style="color: #000000">+=</span><span style="color: #000000">filename</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">.</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">ext;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">保存路径</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;myFile.saveAs(saveurl,mySmartUpload.SAVE_PHYSICAL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">out.print(filename);<br />
</span><span style="color: #008000">//</span><span style="color: #008000">-----------------------上传完成，开始生成缩略图-------------------------&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;java.io.File&nbsp;file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;java.io.File(saveurl);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">读入刚才上传的文件</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;newurl</span><span style="color: #000000">=</span><span style="color: #000000">request.getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">url</span><span style="color: #000000">+</span><span style="color: #000000">filename</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">_min.</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">ext;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">新的缩略图保存地址</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;src&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;javax.imageio.ImageIO.read(file);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">构造Image对象</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">float</span><span style="color: #000000">&nbsp;tagsize</span><span style="color: #000000">=</span><span style="color: #000000">200</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;old_w</span><span style="color: #000000">=</span><span style="color: #000000">src.getWidth(</span><span style="color: #0000ff">null</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到源图宽</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;old_h</span><span style="color: #000000">=</span><span style="color: #000000">src.getHeight(</span><span style="color: #0000ff">null</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;new_w</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;new_h</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到源图长</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;tempsize;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">float</span><span style="color: #000000">&nbsp;tempdouble;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(old_w</span><span style="color: #000000">&gt;</span><span style="color: #000000">old_h){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempdouble</span><span style="color: #000000">=</span><span style="color: #000000">old_w</span><span style="color: #000000">/</span><span style="color: #000000">tagsize;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempdouble</span><span style="color: #000000">=</span><span style="color: #000000">old_h</span><span style="color: #000000">/</span><span style="color: #000000">tagsize;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;new_w</span><span style="color: #000000">=</span><span style="color: #000000">Math.round(old_w</span><span style="color: #000000">/</span><span style="color: #000000">tempdouble);<br />
&nbsp;&nbsp;&nbsp;&nbsp;new_h</span><span style="color: #000000">=</span><span style="color: #000000">Math.round(old_h</span><span style="color: #000000">/</span><span style="color: #000000">tempdouble);</span><span style="color: #008000">//</span><span style="color: #008000">计算新图长宽</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;tag&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);<br />
&nbsp;&nbsp;&nbsp;&nbsp;tag.getGraphics().drawImage(src,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">0</span><span style="color: #000000">,new_w,new_h,</span><span style="color: #0000ff">null</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">绘制缩小后的图</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;newimage</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(newurl);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">输出到文件流</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;JPEGImageEncoder&nbsp;encoder&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;JPEGCodec.createJPEGEncoder(newimage);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;encoder.encode(tag);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">近JPEG编码</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newimage.close();&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.print(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;SCRIPT&nbsp;language='javascript'&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.print(</span><span style="color: #000000">"</span><span style="color: #000000">alert('上传文件大小不能超过</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">(file_size_max</span><span style="color: #000000">/</span><span style="color: #000000">1000</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">K');</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.print(</span><span style="color: #000000">"</span><span style="color: #000000">window.location='upfile.jsp;'</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.print(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/SCRIPT&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
}</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e){<br />
<br />
e.toString();<br />
<br />
}<br />
</span><span style="color: #000000">%&gt;</span><span style="color: #000000">&nbsp;<br />
<br />
</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;upload.htm<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000">请选择上传的图片</span><span style="color: #000000">&lt;/</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">table&nbsp;border</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;align</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">center</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;cellpadding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;cellspacing</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">tr</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">td&nbsp;height</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">45</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;align</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">center</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;valign</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">middle</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">form&nbsp;action</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">uploadimage.jsp</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">post</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;enctype</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">multipart/form-data</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">form1</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
请选择上传的图片<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">file</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">file</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">submit</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Submit</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">上传</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">form</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">td</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">tr</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">table</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<br />
</span></div>
来源:http://www.moon-soft.com/doc/49683.htm
<img src ="http://www.blogjava.net/Reg/aggbug/330185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-08-29 16:25 <a href="http://www.blogjava.net/Reg/archive/2010/08/29/330185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA日期时间加减运算代码</title><link>http://www.blogjava.net/Reg/archive/2010/07/23/326969.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Fri, 23 Jul 2010 10:30:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/07/23/326969.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/326969.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/07/23/326969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/326969.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/326969.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">1</span><span style="color: #000000">.用java.util.Calender来实现<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;calendar</span><span style="color: #000000">=</span><span style="color: #000000">Calendar.getInstance();&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;calendar.setTime(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date());<br />
&nbsp;&nbsp;System.out.println(calendar.get(Calendar.DAY_OF_MONTH));</span><span style="color: #008000">//</span><span style="color: #008000">今天的日期&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">让日期加1&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;System.out.println(calendar.get(Calendar.DATE));</span><span style="color: #008000">//</span><span style="color: #008000">加1之后的日期Top</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #000000">2</span><span style="color: #000000">.用java.text.SimpleDateFormat和java.util.Date来实现<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;d</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date();&nbsp;&nbsp;&nbsp;<br />
&nbsp;SimpleDateFormat&nbsp;df</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">今天的日期：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">df.format(d));&nbsp;&nbsp;&nbsp;<br />
&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">两天前的日期：</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;df.format(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date(d.getTime()&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">24</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000">)));&nbsp;&nbsp;&nbsp;<br />
&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">三天后的日期：</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;df.format(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date(d.getTime()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">24</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000">)));</span></div>
<img src ="http://www.blogjava.net/Reg/aggbug/326969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-07-23 18:30 <a href="http://www.blogjava.net/Reg/archive/2010/07/23/326969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 科学记数法数转为其他数值类型</title><link>http://www.blogjava.net/Reg/archive/2010/07/22/326860.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Thu, 22 Jul 2010 10:26:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/07/22/326860.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/326860.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/07/22/326860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/326860.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/326860.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1.1234546789E6</span><span style="color: #000000">;<br />
&nbsp;&nbsp;java.text.DecimalFormat&nbsp;df&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;java.text.DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">00.00</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">""00.00"小数点后面的0的个数表示小数点的个数</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;String&nbsp;b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df.format(a);<br />
<br />
&nbsp;<br />
<br />
</span><span style="color: #000000">------</span><span style="color: #000000">打印结果</span><span style="color: #000000">-----------------</span><span style="color: #000000"><br />
<br />
</span><span style="color: #000000">1123454.6789</span><span style="color: #000000"><br />
<br />
</span></div>
<img src ="http://www.blogjava.net/Reg/aggbug/326860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-07-22 18:26 <a href="http://www.blogjava.net/Reg/archive/2010/07/22/326860.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java日期循环，Java获取当月的第一天和最后一天</title><link>http://www.blogjava.net/Reg/archive/2010/07/20/326675.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Tue, 20 Jul 2010 13:52:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/07/20/326675.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/326675.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/07/20/326675.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/326675.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/326675.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">1</span><span style="color: #000000">、Java日期循环<br />
<br />
SimpleDateFormat&nbsp;formater&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
String&nbsp;&nbsp;&nbsp;dateStr1</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">2008-3-16</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
<br />
String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateStr2</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">2008-3-24</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
<br />
java.util.Date&nbsp;dateBegin</span><span style="color: #000000">=</span><span style="color: #000000">formater.parse(dateStr1);<br />
<br />
java.util.Date&nbsp;dateEnd</span><span style="color: #000000">=</span><span style="color: #000000">formater.parse(dateStr2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
Calendar&nbsp;&nbsp;&nbsp;ca</span><span style="color: #000000">=</span><span style="color: #000000">Calendar.getInstance();&nbsp;<br />
<br />
</span><span style="color: #0000ff">while</span><span style="color: #000000">(dateBegin.compareTo(dateEnd)</span><span style="color: #000000">&lt;=</span><span style="color: #000000">0</span><span style="color: #000000">){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca.setTime(dateBegin);&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca.add(ca.DATE,</span><span style="color: #000000">1</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">把dateBegin加上1天然后重新赋值给date1&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateBegin</span><span style="color: #000000">=</span><span style="color: #000000">ca.getTime();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
</span><span style="color: #000000">2</span><span style="color: #000000">、Java获取当月的第一天和最后一天<br />
<br />
Calendar&nbsp;cal&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calendar.getInstance();&nbsp;<br />
<br />
SimpleDateFormat&nbsp;datef</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">当前月的最后一天&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.set(&nbsp;Calendar.DATE,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.roll(Calendar.DATE,&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;endTime</span><span style="color: #000000">=</span><span style="color: #000000">cal.getTime();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;endTime1</span><span style="color: #000000">=</span><span style="color: #000000">datef.format(endTime)</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;23:59:59</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">当前月的第一天&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.set(GregorianCalendar.DAY_OF_MONTH,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;beginTime</span><span style="color: #000000">=</span><span style="color: #000000">cal.getTime();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;beginTime1</span><span style="color: #000000">=</span><span style="color: #000000">datef.format(beginTime)</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;00:00:00</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span></div>
<img src ="http://www.blogjava.net/Reg/aggbug/326675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-07-20 21:52 <a href="http://www.blogjava.net/Reg/archive/2010/07/20/326675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;font color=red&gt;Java网络socket编程详解&lt;/font&gt;</title><link>http://www.blogjava.net/Reg/archive/2010/07/17/326392.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Sat, 17 Jul 2010 05:39:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/07/17/326392.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/326392.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2010/07/17/326392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/326392.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/326392.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 或许有点长但是一步步教你我想你也愿意看7.2&nbsp;面向套接字编程&nbsp;&nbsp;&nbsp;&nbsp;我们已经通过了解Socket的接口，知其所以然，下面我们就将通过具体的案例，来熟悉Socket的具体工作方式7.2.1使用套接字实现基于TCP协议的服务器和客户机程序&nbsp;&nbsp;&nbsp;&nbsp;依据TCP协议，在C/S架构的通讯过程中...&nbsp;&nbsp;<a href='http://www.blogjava.net/Reg/archive/2010/07/17/326392.html'>阅读全文</a><img src ="http://www.blogjava.net/Reg/aggbug/326392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-07-17 13:39 <a href="http://www.blogjava.net/Reg/archive/2010/07/17/326392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>流水帐号生成自定义策略</title><link>http://www.blogjava.net/Reg/archive/2010/07/09/325635.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Fri, 09 Jul 2010 04:52:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2010/07/09/325635.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: USE&nbsp;[fa1]GO/******&nbsp;对象:&nbsp;&nbsp;Table&nbsp;[dbo].[SYS_SERIAL_NUMBER]&nbsp;&nbsp;&nbsp;&nbsp;脚本日期:&nbsp;07/09/2010&nbsp;12:45:23&nbsp;******/SET&nbsp;ANSI_NULLS&nbsp;ONGOSET&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/Reg/archive/2010/07/09/325635.html'>阅读全文</a><img src ="http://www.blogjava.net/Reg/aggbug/325635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2010-07-09 12:52 <a href="http://www.blogjava.net/Reg/archive/2010/07/09/325635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Calendar获取年月日时分秒毫秒</title><link>http://www.blogjava.net/Reg/archive/2009/11/20/303042.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Fri, 20 Nov 2009 05:46:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2009/11/20/303042.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/303042.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2009/11/20/303042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/303042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/303042.html</trackback:ping><description><![CDATA[<div style="margin: 15px" width="560">
<div>&nbsp;&nbsp;&nbsp; 开始使用new Date()测试,并用通过date.getMonth(),和date.getDay()获取,不过后来发现这两个访求是jdk1.1版本的,现在已经不用了,而且结果也不正确.</div>
<div>int month = (date.get(Calendar.MONTH))+1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int day = date.get(Calendar.DAY_OF_MONTH);
<p>获取当前的月份和日期</p>
<p>试了一下,果然正确</p>
<p>后来查看java doc文档,MONTH字段解释如下</p>
<p>Field number for <code><font face="NSimsun">get</font></code> and <code><font face="NSimsun">set</font></code> indicating the month. This is a calendar-specific value. The first month of the year is <code><font face="NSimsun">JANUARY</font></code> which is 0; the last depends on the number of months in a year.</p>
<p>这个字段的值只是说明get()的属性字段值,来获取month的</p>
<p>&nbsp;</p>
<p>以下为获取其它:</p>
<p>Calendar CD = Calendar.getInstance();<br />
int YY = CD.get(Calendar.YEAR) ;<br />
int MM = CD.get(Calendar.MONTH)+1;<br />
int DD = CD.get(Calendar.DATE);<br />
int HH = CD.get(Calendar.HOUR);<br />
int NN = CD.get(Calendar.MINUTE);<br />
int SS = CD.get(Calendar.SECOND);<br />
int MI = CD.get(Calendar.MILLISECOND);</p>
<p>Calendar cal = Calendar.getInstance();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前年<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int year = cal.get(Calendar.YEAR);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前月<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int month = (cal.get(Calendar.MONTH))+1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前月的第几天：即当前日<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int day_of_month = cal.get(Calendar.DAY_OF_MONTH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前时：HOUR_OF_DAY-24小时制；HOUR-12小时制<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int hour = cal.get(Calendar.HOUR_OF_DAY);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前分<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int minute = cal.get(Calendar.MINUTE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前秒<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int second = cal.get(Calendar.SECOND);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //0-上午；1-下午<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int ampm = cal.get(Calendar.AM_PM);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前年的第几周<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前月的第几周<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int week_of_month = cal.get(Calendar.WEEK_OF_MONTH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //当前年的第几天<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int day_of_year = cal.get(Calendar.DAY_OF_YEAR);</p>
</div>
</div>
 <img src ="http://www.blogjava.net/Reg/aggbug/303042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2009-11-20 13:46 <a href="http://www.blogjava.net/Reg/archive/2009/11/20/303042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java随机数详解&lt;font color=red&gt;新手晋级&lt;/font&gt;</title><link>http://www.blogjava.net/Reg/archive/2009/11/20/303040.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Fri, 20 Nov 2009 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2009/11/20/303040.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/303040.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2009/11/20/303040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/303040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/303040.html</trackback:ping><description><![CDATA[<table style="table-layout: fixed; width: 100%">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text">
            <div>
            <div><font color="#660000"><strong>方法1</strong><br />
            </font><font size="3">(数据类型)(最小值+Math.random()*(最大值-最小值+1))<br />
            例:<br />
            <font color="#ff0000">(int)(1+Math.random()*(10-1+1))</font><br />
            从1到10的int型随数</font></div>
            <div><strong><font color="#660000">方法2</font></strong><br />
            <font size="3">获得随机数<br />
            for (int i=0;i&lt;30;i++)<br />
            {System.out.println<font color="#ff0000">((int)(1+Math.random()*10));}</font><br />
            <font color="#ff0000">(int)(1+Math.random()*10)</font><br />
            通过java.Math包的random方法得到1-10的int随机数<br />
            公式是:最小值---最大值（整数）的随机数<br />
            （类型）最小值+Math.random()*最大值</font></div>
            <div><font size="3"><strong><font color="#660000" size="2">方法3</font></strong><br />
            <font color="#ff0000">Random ra =new Random();</font><br />
            for (int i=0;i&lt;30;i++)<br />
            {System.out.println(<font color="#ff0000">ra.nextInt(10)+1</font>);}<br />
            通过java.util包中的Random类的nextInt方法来得到1-10的int随机数</font></div>
            </div>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<p>java产生随机数的几种方式 <br />
一.在j2se里我们可以使用Math.random()方法来产生一个随机数，这个产生的随机数是0-1之间的一个double，我们可以把他乘以一定的数，比如说乘以100，他就是个100以内的随机，这个在j2me中没有。</p>
<p>二.在java.util这个包里面提供了一个Random的类，我们可以新建一个Random的对象来产生随机数，他可以产生随机整数、随机float、随机double，随机long，这个也是我们在j2me的程序里经常用的一个取随机数的方法。</p>
<p>三.在我们的System类中有一个currentTimeMillis()方法，这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数，返回类型是long，我们可以拿他作为一个随机数，我们可以拿他对一些数取模，就可以把他限制在一个范围之内啦</p>
<p>其实在Random的默认构造方法里也是使用上面第三种方法进行随机数的产生的</p>
<p><br />
对于方法二中的Random类有以下说明：</p>
<p>java.util.Random类有两种方式构建方式：带种子和不带种子</p>
<p>不带种子： <br />
此种方式将会返回随机的数字，每次运行结果不一样</p>
<p>public class RandomTest { <br />
public static void main(String[] args) { <br />
java.util.Random r=new java.util.Random(); <br />
for(int i=0;i&lt;10;i++){ <br />
&nbsp;&nbsp;&nbsp; System.out.println(r.nextInt()); <br />
}</p>
<p>} <br />
带种子： <br />
此种方式，无论程序运行多少次，返回结果都是一样的</p>
<p>public static void main(String[] args) { <br />
java.util.Random r=new java.util.Random(10); <br />
for(int i=0;i&lt;10;i++){ <br />
&nbsp;&nbsp;&nbsp; System.out.println(r.nextInt()); <br />
} <br />
}</p>
<p>两种方式的差别在于</p>
<p>(1) 首先请打开Java Doc，我们会看到Random类的说明：</p>
<p>此类的实例用于生成伪随机数流，此类使用 48 位的种子，该种子可以使用线性同余公式对其进行修改（请参阅 Donald Knuth 的《The Art of Computer Programming, Volume 2》，第 3.2.1 节）。 </p>
<p>如果用相同的种子创建两个 Random 实例，则对每个实例进行相同的方法调用序列，它们将生成并返回相同的数字序列。为了保证实现这种特性，我们为类Random指定了特定的算法。为了 Java 代码的完全可移植性，Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法，只要其符合所有方法的常规协定即可。 </p>
<p>Java Doc对Random类已经解释得非常明白，我们的测试也验证了这一点。</p>
<p>(2) 如果没有提供种子数，Random实例的种子数将是当前时间的毫秒数，可以通过System.currentTimeMillis()来获得当前时间的毫秒数。打开JDK的源代码，我们可以非常明确地看到这一点。</p>
<p>/** <br />
* Creates a new random number generator. Its seed is initialized to <br />
* a value based on the current time: <br />
* Random() { this(System.currentTimeMillis()); }java.lang.System#currentTimeMillis() <br />
*/ <br />
public Random() { this(System.currentTimeMillis()); }</p>
<p><br />
另外： </p>
<p>random对象的nextInt(),nextInt(int n)方法的说明：</p>
<p>int nextInt() <br />
&nbsp;&nbsp;&nbsp; 返回下一个伪随机数，它是此随机数生成器的序列中均匀分布的 int 值。 <br />
int nextInt(int n) <br />
&nbsp;&nbsp;&nbsp; 返回一个伪随机数，它是从此随机数生成器的序列中取出的、在 0（包括）和指定值（不包括）之间均匀分布的 int值。&nbsp;&nbsp;<br />
</p>
<h1>Java随机数总结</h1>
<div>
<p>　　随机数在实际中使用很广泛，比如要随即生成一个固定长度的字符串、数字。或者随即生成一个不定长度的数字、或者进行一个模拟的随机选择等等。Java提供了最基本的工具，可以帮助开发者来实现这一切。</p>
<p>　　一、Java随机数的产生方式</p>
<p>　　在Java中，随机数的概念从广义上将，有三种。</p>
<p>　　1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。</p>
<p>　　2、通过Math.random()返回一个0到1之间的double值。</p>
<p>　　3、通过Random类来产生一个随机数，这个是专业的Random工具类，功能强大。</p>
<p>　　二、Random类API说明</p>
<p>　　1、Java API说明</p>
<p>　　Random类的实例用于生成伪随机数流。此类使用 48 位的种子，使用线性同余公式对其进行修改(请参阅 Donald Knuth 的《The Art of Computer Programming， Volume 2》，第 3.2.1 节)。</p>
<p>　　如果用相同的种子创建两个 Random 实例，则对每个实例进行相同的方法调用序列，它们将生成并返回相同的数字序列。为了保证属性的实现，为类 Random 指定了特定的算法。</p>
<p>　　很多应用程序会发现 Math 类中的 random 方法更易于使用。</p>
<p>　　2、方法摘要</p>
<p>　　Random()</p>
<p>　　创建一个新的随机数生成器。</p>
<p>　　Random(long seed)</p>
<p>　　使用单个 long 种子创建一个新随机数生成器： public Random(long seed) { setSeed(seed); } next 方法使用它来保存随机数生成器的状态。</p>
<p>　　protected int next(int bits)</p>
<p>　　生成下一个伪随机数。</p>
<p>　　boolean nextBoolean()</p>
<p>　　返回下一个伪随机数，它是从此随机数生成器的序列中取出的、均匀分布的 boolean 值。</p>
<p>　　void nextBytes(byte[] bytes)</p>
<p>　　生成随机字节并将其置于用户提供的字节数组中。</p>
<p>　　double nextDouble()</p>
<p>　　返回下一个伪随机数，它是从此随机数生成器的序列中取出的、在 0.0 和 1.0之间均匀分布的 double 值。</p>
<p>　　float nextFloat()</p>
<p>　　返回下一个伪随机数，它是从此随机数生成器的序列中取出的、在 0.0 和 1.0 之间均匀分布的 float 值。</p>
<p>　　double nextGaussian()</p>
<p>　　返回下一个伪随机数，它是从此随机数生成器的序列中取出的、呈高斯(&#8220;正常地&#8221;)分布的 double 值，其平均值是 0.0，标准偏差是 1.0。</p>
<p>　　int nextInt()</p>
<p>　　返回下一个伪随机数，它是此随机数生成器的序列中均匀分布的 int 值。</p>
<p>　　int nextInt(int n)</p>
<p>　　返回一个伪随机数，它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。</p>
<p>　　long nextLong()</p>
<p>　　返回下一个伪随机数，它是从此随机数生成器的序列中取出的、均匀分布的 long 值。</p>
<p>　　void setSeed(long seed)</p>
<p>　　使用单个 long 种子设置此随机数生成器的种子。</p>
<p>　　三、Random类使用说明</p>
<p>　　1、带种子与不带种子的区别Random类使用的根本是策略分带种子和不带种子的Random的实例。</p>
<p>　　通俗说，两者的区别是：带种子的，每次运行生成的结果都是一样的。</p>
<p>　　不带种子的，每次运行生成的都是随机的，没有规律可言。</p>
<p>　　2、创建不带种子的Random对象</p>
<p>　　Random random = new Random();</p>
<p>　　3、创建不带种子的Random对象有两种方法：</p>
<p>　　1) Random random = new Random(555L);</p>
<p>　　2) Random random = new Random();random.setSeed(555L);</p>
<p>　　四、测试</p>
<p>　　通过一个例子说明上面的用法</p>
<p>　　import java.util.Random;</p>
<p>　　/**</p>
<p>　　* Java随机数测试</p>
<p>　　* User: leizhimin</p>
<p>　　* Date: 2008-11-19 17:52:50</p>
<p>　　*/</p>
<p>　　public class TestRandomNum {</p>
<p>　　public static void main(String[] args) {</p>
<p>　　randomTest();</p>
<p>　　testNoSeed();</p>
<p>　　testSeed1();</p>
<p>　　testSeed2();</p>
<p>　　}</p>
<p>　　public static void randomTest() {</p>
<p>　　System.out.println("--------------test()--------------");</p>
<p>　　//返回以毫秒为单位的当前时间。</p>
<p>　　long r1 = System.currentTimeMillis();</p>
<p>　　//返回带正号的 double 值，大于或等于 0.0，小于 1.0。</p>
<p>　　double r2 = Math.random();</p>
<p>　　//通过Random类来获取下一个随机的整数</p>
<p>　　int r3 = new Random().nextInt();</p>
<p>　　System.out.println("r1 = " + r1);</p>
<p>　　System.out.println("r3 = " + r2);</p>
<p>　　System.out.println("r2 = " + r3);</p>
<p>　　}</p>
<p>　　public static void testNoSeed() {</p>
<p>　　System.out.println("--------------testNoSeed()--------------");</p>
<p>　　//创建不带种子的测试Random对象</p>
<p>　　Random random = new Random();</p>
<p>　　for (int i = 0; i &lt; 3; i++) {</p>
<p>　　System.out.println(random.nextInt());</p>
<p>　　}</p>
<p>　　}</p>
<p>　　public static void testSeed1() {</p>
<p>　　System.out.println("--------------testSeed1()--------------");</p>
<p>　　//创建带种子的测试Random对象</p>
<p>　　Random random = new Random(555L);</p>
<p>　　for (int i = 0; i &lt; 3; i++) {</p>
<p>　　System.out.println(random.nextInt());</p>
<p>　　}</p>
<p>　　}</p>
<p>　　public static void testSeed2() {</p>
<p>　　System.out.println("--------------testSeed2()--------------");</p>
<p>　　//创建带种子的测试Random对象</p>
<p>　　Random random = new Random();</p>
<p>　　random.setSeed(555L);</p>
<p>　　for (int i = 0; i &lt; 3; i++) {</p>
<p>　　System.out.println(random.nextInt());</p>
<p>　　}</p>
<p>　　}</p>
<p>　　}</p>
<p>　　运行结果：</p>
<p>　　--------------test()--------------</p>
<p>　　r1 = 1227108626582</p>
<p>　　r3 = 0.5324887850155043</p>
<p>　　r2 = -368083737</p>
<p>　　--------------testNoSeed()--------------</p>
<p>　　809503475</p>
<p>　　1585541532</p>
<p>　　-645134204</p>
<p>　　--------------testSeed1()--------------</p>
<p>　　-1367481220</p>
<p>　　292886146</p>
<p>　　-1462441651</p>
<p>　　--------------testSeed2()--------------</p>
<p>　　-1367481220</p>
<p>　　292886146</p>
<p>　　-1462441651</p>
<p>　　Process finished with exit code 0</p>
<p>　　通过testSeed1()与testSeed2()方法的结果可以看到，两个打印结果相同，因为他们种子相同，再运行一次，结果还是一样的，这就是带种子随机数的特性。</p>
<p>　　而不带种子的，每次运行结果都是随机的。</p>
<p>　　五、综合应用</p>
<p>　　下面通过最近写的一个随机数工具类来展示用法：</p>
<p>　　import java.util.Random;</p>
<p>　　/**</p>
<p>　　* 随机数、随即字符串工具</p>
<p>　　* User: leizhimin</p>
<p>　　* Date: 2008-11-19 9:43:09</p>
<p>　　*/</p>
<p>　　public class RandomUtils {</p>
<p>　　public static final String allChar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";</p>
<p>　　public static final String letterChar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";</p>
<p>　　public static final String numberChar = "0123456789";</p>
<p>　　/**</p>
<p>　　* 返回一个定长的随机字符串(只包含大小写字母、数字)</p>
<p>　　*</p>
<p>　　* @param length 随机字符串长度</p>
<p>　　* @return 随机字符串</p>
<p>　　*/</p>
<p>　　public static String generateString(int length) {</p>
<p>　　StringBuffer sb = new StringBuffer();</p>
<p>　　Random random = new Random();</p>
<p>　　for (int i = 0; i &lt; length; i++) {</p>
<p>　　sb.append(allChar.charAt(random.nextInt(allChar.length())));</p>
<p>　　}</p>
<p>　　return sb.toString();</p>
<p>　　}</p>
<p>　　/**</p>
<p>　　* 返回一个定长的随机纯字母字符串(只包含大小写字母)</p>
<p>　　*</p>
<p>　　* @param length 随机字符串长度</p>
<p>　　* @return 随机字符串</p>
<p>　　*/</p>
<p>　　public static String generateMixString(int length) {</p>
<p>　　StringBuffer sb = new StringBuffer();</p>
<p>　　Random random = new Random();</p>
<p>　　for (int i = 0; i &lt; length; i++) {</p>
<p>　　sb.append(allChar.charAt(random.nextInt(letterChar.length())));</p>
<p>　　}</p>
<p>　　return sb.toString();</p>
<p>　　}</p>
<p>　　/**</p>
<p>　　* 返回一个定长的随机纯大写字母字符串(只包含大小写字母)</p>
<p>　　*</p>
<p>　　* @param length 随机字符串长度</p>
<p>　　* @return 随机字符串</p>
<p>　　*/</p>
<p>　　public static String generateLowerString(int length) {</p>
<p>　　return generateMixString(length).toLowerCase();</p>
<p>　　}</p>
<p>　　/**</p>
<p>　　* 返回一个定长的随机纯小写字母字符串(只包含大小写字母)</p>
<p>　　*</p>
<p>　　* @param length 随机字符串长度</p>
<p>　　* @return 随机字符串</p>
<p>　　*/</p>
<p>　　public static String generateUpperString(int length) {</p>
<p>　　return generateMixString(length).toUpperCase();</p>
<p>　　}</p>
<p>　　/**</p>
<p>　　* 生成一个定长的纯0字符串</p>
<p>　　*</p>
<p>　　* @param length 字符串长度</p>
<p>　　* @return 纯0字符串</p>
<p>　　*/</p>
<p>　　public static String generateZeroString(int length) {</p>
<p>　　StringBuffer sb = new StringBuffer();</p>
<p>　　for (int i = 0; i &lt; length; i++) {</p>
<p>　　sb.append('0');</p>
<p>　　}</p>
<p>　　return sb.toString();</p>
<p>　　}</p>
<p>　　/**</p>
<p>　　* 根据数字生成一个定长的字符串，长度不够前面补0</p>
<p>　　*</p>
<p>　　* @param num 数字</p>
<p>　　* @param fixdlenth 字符串长度</p>
<p>　　* @return 定长的字符串</p>
<p>　　*/</p>
<p>　　public static String toFixdLengthString(long num, int fixdlenth) {</p>
<p>　　StringBuffer sb = new StringBuffer();</p>
<p>　　String strNum = String.valueOf(num);</p>
<p>　　if (fixdlenth - strNum.length() &gt;= 0) {</p>
<p>　　sb.append(generateZeroString(fixdlenth - strNum.length()));</p>
<p>　　} else {</p>
<p>　　throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth + "的字符串发生异常!");</p>
<p>　　}</p>
<p>　　sb.append(strNum);</p>
<p>　　return sb.toString();</p>
<p>　　}</p>
<p>　　/**</p>
<p>　　* 根据数字生成一个定长的字符串，长度不够前面补0</p>
<p>　　*</p>
<p>　　* @param num 数字</p>
<p>　　* @param fixdlenth 字符串长度</p>
<p>　　* @return 定长的字符串</p>
<p>　　*/</p>
<p>　　public static String toFixdLengthString(int num, int fixdlenth) {</p>
<p>　　StringBuffer sb = new StringBuffer();</p>
<p>　　String strNum = String.valueOf(num);</p>
<p>　　if (fixdlenth - strNum.length() &gt;= 0) {</p>
<p>　　sb.append(generateZeroString(fixdlenth - strNum.length()));</p>
<p>　　} else {</p>
<p>　　throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth + "的字符串发生异常!");</p>
<p>　　}</p>
<p>　　sb.append(strNum);</p>
<p>　　return sb.toString();</p>
<p>　　}</p>
<p>　　public static void main(String[] args) {</p>
<p>　　System.out.println(generateString(15));</p>
<p>　　System.out.println(generateMixString(15));</p>
<p>　　System.out.println(generateLowerString(15));</p>
<p>　　System.out.println(generateUpperString(15));</p>
<p>　　System.out.println(generateZeroString(15));</p>
<p>　　System.out.println(toFixdLengthString(123, 15));</p>
<p>　　System.out.println(toFixdLengthString(123L, 15));</p>
<p>　　}</p>
<p>　　}</p>
<p>　　运行结果：</p>
<p>　　vWMBPiNbzfGCpHG</p>
<p>　　23hyraHdJkKPwMv</p>
<p>　　tigowetbwkm1nde</p>
<p>　　BPZ1KNEJPHB115N</p>
<p>　　000000000000000</p>
<p>　　000000000000123</p>
<p>　　000000000000123</p>
<p>　　Process finished with exit code 0</p>
<p>　　六、总结</p>
<p>　　1、随机数很常用，在Java有三种产生方式，以Random随机数的使用最为复杂。</p>
<p>　　2、Random类对象有是否带种子之分，带种子的只要种子相同，多次运行，生成随机数的结果总是那样。</p>
<p>　　3、带种子随机数的带种子的对象创建方式有两种，效果一样。但是带种子的随机数用处似乎不大。</p>
<p>　　4、Random的功能涵盖了Math.random()的功能。</p>
<p>　　5、可以通过随机数去做实现随机字符串等复杂的随机数据。</p>
<p>　　6、不要研究不重复的随机数，意义不大。</p>
<p>在Java 中我们可以使用java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数，分别是Random()和Random(long seed)。Random()使用当前时间即System.currentTimeMillis()作为发生器的种子，Random(long seed)使用指定的seed作为发生器的种子。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 随机数发生器(Random)对象产生以后，通过调用不同的method：nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;生成随机数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random(100);//指定种子数100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; random调用不同的方法，获得随机数。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果2个Random对象使用相同的种子（比如都是100），并且以相同的顺序调用相同的函数，那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.util.*;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class TestRandom {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random1 = new Random(100);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random1.nextInt());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random1.nextFloat());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random1.nextBoolean());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random2 = new Random(100);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random2.nextInt());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random2.nextFloat());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random2.nextBoolean());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;指定范围内的随机数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 随机数控制在某个范围内,使用模数运算符%<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.util.*;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class TestRandom {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0; i &lt; 10;i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Math.abs(random.nextInt())%10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 获得的随机数有正有负的，用Math.abs使获取数据范围为非负数<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&gt;获取指定范围内的不重复随机数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.util.*;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class TestRandom {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] intRet = new int[6]; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intRd = 0; //存放随机数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int count = 0; //记录生成的随机数个数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int flag = 0; //是否已经生成过标志<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(count&lt;6){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random rdm = new Random(System.currentTimeMillis());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intRd = Math.abs(rdm.nextInt())%32+1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;count;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(intRet[i]==intRd){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(flag==0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intRet[count] = intRd;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int t=0;t&lt;6;t++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(t+"-&gt;"+intRet[t]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
Java中的随机数是否可以重复？Java中产生的随机数能否可以用来产生数据库主键？带着这个问题，我们做了一系列测试。<br />
1.测试一： 使用不带参数的Random()构造函数<br />
<br />
public class RandomTest {<br />
<br />
public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; java.util.Random r=new java.util.Random();<br />
&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;10;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(r.nextInt());<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
}<br />
}<br />
程序运行结果：<br />
-1761145445<br />
-1070533012<br />
216216989<br />
-910884656<br />
-1408725314<br />
-1091802870<br />
1681403823<br />
-1099867456<br />
347034376<br />
-1277853157<br />
<br />
再次运行该程序：<br />
-169416241<br />
220377062<br />
-1140589550<br />
-1364404766<br />
-1088116756<br />
2134626361<br />
-546049728<br />
1132916742<br />
-1522319721<br />
1787867608 <br />
<br />
&nbsp;&nbsp;&nbsp; 从上面的测试我们可以看出，使用不带参数的Random()构造函数产生的随机数不会重复。那么，什么情况下Java会产生重复的随机数呢？且看下面的测试。<br />
<br />
2. 测试二：为Random设置种子数<br />
<br />
public class RandomTest_Repeat {<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @param args<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.util.Random r=new java.util.Random(10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;10;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(r.nextInt());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
}<br />
<br />
无论程序运行多少次，其结果总是：<br />
-1157793070<br />
1913984760<br />
1107254586<br />
1773446580<br />
254270492<br />
-1408064384<br />
1048475594<br />
1581279777<br />
-778209333<br />
1532292428<br />
<br />
甚至在不同的机器上测试，测试结果也不会改变！<br />
<br />
3.原因分析：<br />
(1) 首先请打开Java Doc，我们会看到Random类的说明：<br />
此类的实例用于生成伪随机数流，此类使用 48 位的种子，该种子可以使用线性同余公式对其进行修改（请参阅 Donald Knuth 的《The Art of Computer Programming, Volume 2》，第 3.2.1 节）。<br />
如果用相同的种子创建两个 Random 实例，则对每个实例进行相同的方法调用序列，它们将生成并返回相同的数字序列。为了保证实现这种特性，我们为类Random指定了特定的算法。为了 Java 代码的完全可移植性，Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法，只要其符合所有方法的常规协定即可。<br />
Java Doc对Random类已经解释得非常明白，我们的测试也验证了这一点。<br />
<br />
(2) 如果没有提供种子数，Random实例的种子数将是当前时间的毫秒数，可以通过System.currentTimeMillis()来获得当前时间的毫秒数。打开JDK的源代码，我们可以非常明确地看到这一点。<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * Creates a new random number generator. Its seed is initialized to<br />
&nbsp;&nbsp;&nbsp;&nbsp; * a value based on the current time:<br />
&nbsp;&nbsp;&nbsp;&nbsp; * &lt;blockquote&gt;&lt;pre&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; * public Random() { this(System.currentTimeMillis()); }&lt;/pre&gt;&lt;/blockquote&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; *<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @see&nbsp;&nbsp;&nbsp;&nbsp; java.lang.System#currentTimeMillis()<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp; public Random() { this(System.currentTimeMillis()); }<br />
<br />
4. 结论：<br />
&nbsp;&nbsp; 通过上面的测试和分析，我们会对Random类有较为深刻的理解。同时，我觉得，通过阅读Java Doc的API文档，可以很好地提高我们的Java编程能力，做到&#8220;知其然&#8221;；一旦遇到费解的问题，不妨打开Java的源代码，这样我们就能做到&#8220;知其所以然&#8221;。</p>
</div>
 <img src ="http://www.blogjava.net/Reg/aggbug/303040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2009-11-20 13:32 <a href="http://www.blogjava.net/Reg/archive/2009/11/20/303040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA编程&lt;font color=red&gt;新手指引&lt;/font&gt;</title><link>http://www.blogjava.net/Reg/archive/2009/11/20/303027.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Fri, 20 Nov 2009 03:50:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2009/11/20/303027.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/303027.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2009/11/20/303027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/303027.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/303027.html</trackback:ping><description><![CDATA[<div class="topic_content" id="contentHTML124256" style="padding-right: 5px; padding-left: 5px; font-size: 14px; padding-bottom: 5px; line-height: 140%; padding-top: 5px">环境安装配置：<br />
<br />
TOMCAT的配置<br />
http://download.chinaitlab.com/soft/10791.htm<br />
<br />
JAVA配置文件编写说明文档<br />
http://download.chinaitlab.com/soft/10010.htm<br />
<br />
一步一步学会配置Kjava开发环境<br />
http://download.chinaitlab.com/soft/9483.htm<br />
<br />
Weblogic7开发EJB的配置<br />
http://download.chinaitlab.com/soft/4938.htm<br />
<br />
图解JSP环境安装配置<br />
http://download.chinaitlab.com/soft/2157.htm<br />
<br />
Tomcat配置方法<br />
http://download.chinaitlab.com/soft/931.htm<br />
<br />
全程指导Linux下JAVA环境配置<br />
http://download.chinaitlab.com/soft/11272.htm<br />
<br />
学习方法：<br />
<br />
通过JB4学习JAVA<br />
http://download.chinaitlab.com/soft/7589.htm<br />
<br />
10步学习&nbsp;JavaScript<br />
http://download.chinaitlab.com/soft/6492.htm<br />
<br />
Java&nbsp;Sctipt学习不求人<br />
http://download.chinaitlab.com/soft/6361.htm<br />
<br />
JSP学习指南<br />
http://download.chinaitlab.com/soft/6152.htm<br />
<br />
JAVA学习文档<br />
http://download.chinaitlab.com/soft/6114.htm<br />
<br />
J2EE学习笔记<br />
http://download.chinaitlab.com/soft/6048.htm<br />
<br />
JavaScript学习<br />
http://download.chinaitlab.com/soft/3029.htm<br />
<br />
Java2&nbsp;学习指南<br />
http://download.chinaitlab.com/soft/2743.htm<br />
<br />
Juniper学习指南<br />
http://download.chinaitlab.com/soft/2227.htm<br />
<br />
J2EE学习资料<br />
http://download.chinaitlab.com/soft/1618.htm<br />
<br />
JSP由浅入深<br />
http://download.chinaitlab.com/soft/1315.htm<br />
<br />
面向对象编程：<br />
<br />
Java面向对象编程指南<br />
http://download.chinaitlab.com/soft/9792.htm<br />
<br />
JAVA的核心技术：面向对象编程<br />
http://download.chinaitlab.com/soft/9093.htm<br />
<br />
Java&nbsp;与&nbsp;UML&nbsp;面向对象程序设计<br />
http://download.chinaitlab.com/soft/6053.htm<br />
<br />
Java&nbsp;2&nbsp;编程21天自学通<br />
http://download.chinaitlab.com/soft/10507.htm<br />
<br />
J2EE编程起步<br />
http://download.chinaitlab.com/soft/10506.htm<br />
<br />
Java面向对象编程指南<br />
http://download.chinaitlab.com/soft/9792.htm<br />
<br />
Java专业编程指南<br />
http://download.chinaitlab.com/soft/9791.htm<br />
<br />
Java服务器高级编程<br />
http://download.chinaitlab.com/soft/9790.htm<br />
<br />
J2EE&nbsp;EAI编程指南<br />
http://download.chinaitlab.com/soft/9784.htm<br />
<br />
J2MEMIDP无线设备编程指南<br />
http://download.chinaitlab.com/soft/9765.htm<br />
<br />
JAVA编程思想&nbsp;中文版<br />
http://download.chinaitlab.com/soft/9481.htm<br />
<br />
Java&nbsp;XML编程指南<br />
http://download.chinaitlab.com/soft/9097.htm<br />
<br />
Java&nbsp;数据库编程宝典<br />
http://download.chinaitlab.com/soft/9095.htm<br />
<br />
JAVA的核心技术：面向对象编程<br />
http://download.chinaitlab.com/soft/9093.htm<br />
<br />
JDBC&nbsp;API数据库编程实作教材<br />
http://download.chinaitlab.com/soft/9087.htm<br />
<br />
核心&nbsp;JSF&nbsp;编程<br />
http://download.chinaitlab.com/soft/7946.htm<br />
<br />
JAVA&nbsp;2应用编程150例<br />
http://download.chinaitlab.com/soft/6815.htm<br />
<br />
JAVA数据库编程JDBC<br />
http://download.chinaitlab.com/soft/6113.htm<br />
<br />
深入掌握J2EE编程技术<br />
http://download.chinaitlab.com/soft/6030.htm<br />
<br />
实用J2EE设计模式编程指南<br />
http://download.chinaitlab.com/soft/5033.htm<br />
<br />
Java&nbsp;for&nbsp;Internet编程技术<br />
http://download.chinaitlab.com/soft/4198.htm<br />
<br />
Java安全性编程指南<br />
http://download.chinaitlab.com/soft/3773.htm<br />
<br />
J2ME无线设备编程<br />
http://download.chinaitlab.com/soft/3669.htm<br />
<br />
J2EE&nbsp;EJB编程实例<br />
http://download.chinaitlab.com/soft/3141.htm<br />
<br />
Java编程思想&nbsp;第三版<br />
http://download.chinaitlab.com/soft/2982.htm<br />
<br />
Java&nbsp;极限编程<br />
http://download.chinaitlab.com/soft/1707.htm<br />
<br />
Java2编程详解<br />
http://download.chinaitlab.com/soft/1705.htm<br />
<br />
<br />
网络编程：<br />
<br />
J2EE网络编程标准教程<br />
http://download.chinaitlab.com/soft/9100.htm<br />
<br />
Java网络编程实例<br />
http://download.chinaitlab.com/soft/9090.htm<br />
<br />
Java&nbsp;P2P网络编程技术<br />
http://download.chinaitlab.com/soft/6333.htm<br />
<br />
Java网络编程<br />
http://download.chinaitlab.com/soft/3871.htm<br />
<br />
网络编程基础篇之&nbsp;Java&nbsp;Script<br />
http://download.chinaitlab.com/soft/3618.htm<br />
<br />
Solaris&nbsp;Shell&nbsp;编程<br />
http://download.chinaitlab.com/soft/6426.htm<br />
<br />
SUN&nbsp;Solaris管理手册<br />
http://download.chinaitlab.com/soft/5732.htm<br />
<br />
Solaris性能管理<br />
http://download.chinaitlab.com/soft/11247.htm<br />
<br />
Solaris9安装指南<br />
http://download.chinaitlab.com/soft/5022.htm<br />
<br />
SOLARIS高级系统管理员指南<br />
http://download.chinaitlab.com/soft/3726.htm<br />
<br />
Solaris操作环境安全<br />
http://download.chinaitlab.com/soft/1500.htm<br />
<br />
Solaris&nbsp;GNOME2.0桌面用户指南<br />
http://download.chinaitlab.com/soft/1488.htm<br />
<br />
Solaris&nbsp;9&nbsp;12/03&nbsp;安装指南<br />
http://download.chinaitlab.com/soft/1484.htm<br />
<br />
Solaris管理员指南<br />
http://download.chinaitlab.com/soft/1475.htm<br />
<br />
中文Solaris9&nbsp;系统管理员指南<br />
http://download.chinaitlab.com/soft/1463.htm<br />
<br />
Solaris安全性专题指导<br />
http://download.chinaitlab.com/soft/746.htm<br />
<br />
<br />
XML系列：<br />
<br />
Java&nbsp;XML编程指南<br />
http://download.chinaitlab.com/soft/9097.htm<br />
<br />
Java程序设计EJB、XML与数据库<br />
http://download.chinaitlab.com/soft/9094.htm<br />
<br />
XML&nbsp;终极教程<br />
http://download.chinaitlab.com/soft/9057.htm<br />
<br />
Java&amp;XML应用<br />
http://download.chinaitlab.com/soft/6211.htm<br />
<br />
XML_JAVA指南<br />
http://download.chinaitlab.com/soft/6163.htm<br />
<br />
JDBC：<br />
<br />
JDBC&nbsp;API数据库编程实作教材<br />
http://download.chinaitlab.com/soft/9087.htm<br />
<br />
JAVA数据库编程JDBC<br />
http://download.chinaitlab.com/soft/6113.htm<br />
<br />
JDBC&nbsp;API&nbsp;参考教程第三版<br />
http://download.chinaitlab.com/soft/6057.htm<br />
<br />
JDBC与Java数据库程序设计<br />
http://download.chinaitlab.com/soft/6018.htm<br />
<br />
Java语言SQL接口&nbsp;JDBCprogram<br />
http://download.chinaitlab.com/soft/5938.htm<br />
<br />
JSP应用程序开发指南<br />
http://download.chinaitlab.com/soft/1546.htm<br />
<br />
用&nbsp;JDBC&nbsp;管理数据库连接<br />
http://download.chinaitlab.com/soft/935.htm<br />
<br />
JDO：<br />
<br />
全面了解JDO数据库编程<br />
http://download.chinaitlab.com/soft/7992.htm<br />
<br />
Struts：<br />
<br />
Struts中文手册<br />
http://download.chinaitlab.com/soft/10516.htm<br />
<br />
Struts架构指导<br />
http://download.chinaitlab.com/soft/7529.htm<br />
<br />
精通struts技术<br />
http://download.chinaitlab.com/soft/6801.htm<br />
<br />
Struts&nbsp;学习起歩问答<br />
http://download.chinaitlab.com/soft/6156.htm<br />
<br />
Hibernate：<br />
<br />
Hibernate2.1.2参考手册中文版<br />
http://download.chinaitlab.com/soft/8919.htm<br />
<br />
<br />
<br />
JAVA与模式\J2EE模式：<br />
<br />
J2EE&nbsp;核心模式<br />
http://download.chinaitlab.com/soft/9785.htm<br />
<br />
Java&nbsp;企业设计模式<br />
http://download.chinaitlab.com/soft/9096.htm<br />
<br />
Java简单工厂创立性模式介绍<br />
http://download.chinaitlab.com/soft/7398.htm<br />
<br />
EJB设计模式<br />
http://download.chinaitlab.com/soft/6135.htm<br />
<br />
JAVA设计模式<br />
http://download.chinaitlab.com/soft/6112.htm<br />
<br />
实用J2EE设计模式编程指南<br />
http://download.chinaitlab.com/soft/5033.htm<br />
<br />
Java与模式<br />
http://download.chinaitlab.com/soft/3073.htm<br />
<br />
设计模式Java版<br />
http://download.chinaitlab.com/soft/1723.htm<br />
<br />
<br />
JBuilder开发Servlet及JSP：<br />
<br />
精通JBuilder<br />
http://download.chinaitlab.com/soft/10565.htm<br />
<br />
JBuilder速成资料<br />
http://download.chinaitlab.com/soft/9714.htm<br />
<br />
Jbuilder7和weblogic7整合开发手<br />
http://download.chinaitlab.com/soft/9664.htm<br />
<br />
JBUILDER9&nbsp;软件开发项目实践<br />
http://download.chinaitlab.com/soft/9089.htm<br />
<br />
JbuilderX开发指南<br />
http://download.chinaitlab.com/soft/9088.htm<br />
<br />
Jbuilder&nbsp;x&nbsp;指南<br />
http://download.chinaitlab.com/soft/7984.htm<br />
<br />
JBuilder4开发人员指南<br />
http://download.chinaitlab.com/soft/5939.htm<br />
<br />
JBuilder7&nbsp;Weblogic7整和开发培训手册<br />
http://download.chinaitlab.com/soft/4727.htm<br />
<br />
JBuilder开发数据库应用程序<br />
http://download.chinaitlab.com/soft/1701.htm<br />
<br />
Java开发指南--Servlets和JSP篇<br />
http://download.chinaitlab.com/soft/9793.htm<br />
<br />
Java&nbsp;Servlets&nbsp;编程指南<br />
http://download.chinaitlab.com/soft/9098.htm<br />
<br />
Oreilly&nbsp;Java&nbsp;Servlet<br />
http://download.chinaitlab.com/soft/6522.htm<br />
<br />
Java&nbsp;Servlet开发与实例<br />
http://download.chinaitlab.com/soft/6029.htm<br />
<br />
深入Java&nbsp;Servlet&nbsp;网络编程<br />
http://download.chinaitlab.com/soft/9783.htm<br />
<br />
用JSP_Servlet构建三层式管理信息系统<br />
http://download.chinaitlab.com/soft/6034.htm<br />
<br />
Java&nbsp;Servlet帮助文档<br />
http://download.chinaitlab.com/soft/2981.htm<br />
<br />
JSP网站编程教程<br />
http://download.chinaitlab.com/soft/11256.htm<br />
<br />
JSP语法分析<br />
http://download.chinaitlab.com/soft/11257.htm<br />
<br />
JSP实用教程<br />
http://download.chinaitlab.com/soft/10792.htm<br />
<br />
JSP语法（1）--HTML注释<br />
http://download.chinaitlab.com/soft/10790.htm<br />
<br />
JSP应用开发详解<br />
http://download.chinaitlab.com/soft/10025.htm<br />
<br />
JSP技术揭秘<br />
http://download.chinaitlab.com/soft/9387.htm<br />
<br />
JSP技术大全<br />
http://download.chinaitlab.com/soft/9388.htm<br />
<br />
JSP网上书店实例详解<br />
http://download.chinaitlab.com/soft/9386.htm<br />
<br />
JSP动态网页新技术<br />
http://download.chinaitlab.com/soft/8920.htm<br />
<br />
JSP&nbsp;技术大全<br />
http://download.chinaitlab.com/soft/7782.htm<br />
<br />
JSP高级开发与应用<br />
http://download.chinaitlab.com/soft/7633.htm<br />
<br />
JSP&nbsp;完全探索<br />
http://download.chinaitlab.com/soft/7546.htm<br />
<br />
JSP&nbsp;高级开发与应用<br />
http://download.chinaitlab.com/soft/7116.htm<br />
<br />
JSP编程技巧<br />
http://download.chinaitlab.com/soft/7114.htm<br />
<br />
JSP速成教程<br />
http://download.chinaitlab.com/soft/6882.htm<br />
<br />
JSP网络编程技术<br />
http://download.chinaitlab.com/soft/6880.htm<br />
<br />
JSP程序设计指南<br />
http://download.chinaitlab.com/soft/6690.htm<br />
<br />
最新JSP入门与应用<br />
http://download.chinaitlab.com/soft/6697.htm<br />
<br />
JSP快速入门<br />
http://download.chinaitlab.com/soft/6636.htm<br />
<br />
JSP网页编程<br />
http://download.chinaitlab.com/soft/6527.htm<br />
<br />
JSP&nbsp;实用教程<br />
http://download.chinaitlab.com/soft/6334.htm<br />
<br />
JSP入门与提高<br />
http://download.chinaitlab.com/soft/6326.htm<br />
<br />
JSP语法<br />
http://download.chinaitlab.com/soft/6116.htm<br />
<br />
掌握自定义JSP标签<br />
http://download.chinaitlab.com/soft/6096.htm<br />
<br />
JSP&nbsp;动态网站技术入门与提高<br />
http://download.chinaitlab.com/soft/6019.htm<br />
<br />
JSP实例入门<br />
http://download.chinaitlab.com/soft/4377.htm<br />
<br />
JSP教程之与数据库通信<br />
http://download.chinaitlab.com/soft/3673.htm<br />
<br />
如何成为优秀的JSP&nbsp;程序员<br />
http://download.chinaitlab.com/soft/3002.htm<br />
<br />
JSP数据库编程指南<br />
http://download.chinaitlab.com/soft/2946.htm<br />
<br />
JSP&nbsp;高级编程<br />
http://download.chinaitlab.com/soft/2635.htm<br />
<br />
JSP实用编程实例集锦<br />
http://download.chinaitlab.com/soft/2154.htm<br />
<br />
JSP程序设计精彩实例<br />
http://download.chinaitlab.com/soft/2151.htm<br />
<br />
JSP即时应用<br />
http://download.chinaitlab.com/soft/1547.htm<br />
<br />
JSP程序设计精彩实例<br />
http://download.chinaitlab.com/soft/1543.htm<br />
<br />
JSP实用编程实例集锦<br />
http://download.chinaitlab.com/soft/1537.htm<br />
<br />
JSP基础<br />
http://download.chinaitlab.com/soft/894.htm<br />
<br />
Eclipse开发Servlet及JSP：<br />
<br />
Eclipse+Tomcat集成开发servle<br />
http://download.chinaitlab.com/soft/6134.htm<br />
<br />
J2EE&nbsp;Jboss&nbsp;Ejb&nbsp;With&nbsp;Eclipse&nbsp;2003<br />
http://download.chinaitlab.com/soft/6045.htm </div>
 <img src ="http://www.blogjava.net/Reg/aggbug/303027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2009-11-20 11:50 <a href="http://www.blogjava.net/Reg/archive/2009/11/20/303027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;font color=#AD842A&gt;配置较全的&lt;/font&gt;&lt;font color=#F1AF03&gt;log4j.properties&lt;/font&gt;&lt;font color=red&gt;新手进阶篇&lt;/font&gt;</title><link>http://www.blogjava.net/Reg/archive/2009/11/18/302785.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Wed, 18 Nov 2009 05:00:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2009/11/18/302785.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/302785.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2009/11/18/302785.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/302785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/302785.html</trackback:ping><description><![CDATA[<p>log4j.rootLogger=INFO,consoleAppender,logfile,MAIL<br />
log4j.addivity.org.apache=true</p>
<p><span style="color: #99cc00">#ConsoleAppender，控制台输出<br />
#FileAppender，文件日志输出<br />
#SMTPAppender，发邮件输出日志<br />
#SocketAppender，Socket日志<br />
#NTEventLogAppender，Window NT日志<br />
#SyslogAppender，<br />
#JMSAppender，<br />
#AsyncAppender，<br />
#NullAppender</span></p>
<p><span style="color: #99cc00">#文件输出：RollingFileAppender</span><br />
<span style="color: #99cc00">#log4j.rootLogger = INFO,logfile</span><br />
log4j.appender.logfile = org.apache.log4j.RollingFileAppender<br />
log4j.appender.logfile.Threshold = INFO&nbsp;&nbsp; <br />
<span style="color: #99cc00"># 输出以上的INFO信息 </span><br />
log4j.appender.logfile.File = INFO_log.html&nbsp;&nbsp;&nbsp;&nbsp; <br />
<span style="color: #99cc00">#保存log文件路径 </span><br />
log4j.appender.logfile.Append = true&nbsp;&nbsp;&nbsp; <br />
<span style="color: #99cc00"># 默认为true，添加到末尾，false在每次启动时进行覆盖 </span><br />
log4j.appender.logfile.MaxFileSize = 1MB <br />
<span style="color: #99cc00"># 一个log文件的大小，超过这个大小就又会生成1个日志 # KB ，MB，GB </span><br />
log4j.appender.logfile.MaxBackupIndex = 3&nbsp;&nbsp; <br />
<span style="color: #99cc00"># 最多保存3个文件备份 </span><br />
log4j.appender.logfile.layout = org.apache.log4j.HTMLLayout <br />
<span style="color: #99cc00"># 输出文件的格式 </span><br />
log4j.appender.logfile.layout.LocationInfo = true <br />
<span style="color: #99cc00">#是否显示类名和行数<br />
</span>log4j.appender.logfile.layout.Title =title:\u63d0\u9192\u60a8\uff1a\u7cfb\u7edf\u53d1\u751f\u4e86\u4e25\u91cd\u9519\u8bef <br />
<span style="color: #99cc00">#html页面的 &lt; title &gt; <br />
############################## SampleLayout ####################################<br />
# log4j.appender.logfile.layout = org.apache.log4j.SampleLayout<br />
############################## PatternLayout ###################################<br />
# log4j.appender.logfile.layout = org.apache.log4j.PatternLayout<br />
# log4j.appender.logfile.layout.ConversionPattern =% d % p [ % c] -&nbsp;&nbsp; % m % n % d<br />
############################## XMLLayout #######################################<br />
# log4j.appender.logfile.layout = org.apache.log4j.XMLLayout<br />
# log4j.appender.logfile.layout.LocationInfo = true #是否显示类名和行数<br />
############################## TTCCLayout ######################################<br />
# log4j.appender.logfile.layout = org.apache.log4j.TTCCLayout<br />
# log4j.appender.logfile.layout.DateFormat = ISO8601<br />
#NULL, RELATIVE, ABSOLUTE, DATE or ISO8601.<br />
# log4j.appender.logfile.layout.TimeZoneID = GMT - 8 : 00 <br />
# log4j.appender.logfile.layout.CategoryPrefixing = false ##默认为true 打印类别名<br />
# log4j.appender.logfile.layout.ContextPrinting = false ##默认为true 打印上下文信息<br />
# log4j.appender.logfile.layout.ThreadPrinting = false ##默认为true 打印线程名<br />
# 打印信息如下：<br />
#2007 - 09 - 13&nbsp;&nbsp; 14 : 45 : 39 , 765 [http - 8080 - 1 ] ERROR com.poxool.test.test - error成功关闭链接<br />
###############################################################################<br />
#每天文件的输出：DailyRollingFileAppender<br />
#log4j.rootLogger = INFO,errorlogfile</span><br />
log4j.appender.errorlogfile = org.apache.log4j.DailyRollingFileAppender<br />
log4j.appender.errorlogfile.Threshold = ERROR<br />
log4j.appender.errorlogfile.File = ../logs/ERROR_log<br />
log4j.appender.errorlogfile.Append = true <br />
<span style="color: #99cc00">#默认为true，添加到末尾，false在每次启动时进行覆盖</span><br />
log4j.appender.errorlogfile.ImmediateFlush = true&nbsp;&nbsp; <br />
<span style="color: #99cc00">#直接输出，不进行缓存<br />
# ' . ' yyyy - MM: 每个月更新一个log日志<br />
# ' . ' yyyy - ww: 每个星期更新一个log日志<br />
# ' . ' yyyy - MM - dd: 每天更新一个log日志<br />
# ' . ' yyyy - MM - dd - a: 每天的午夜和正午更新一个log日志<br />
# ' . ' yyyy - MM - dd - HH: 每小时更新一个log日志<br />
# ' . ' yyyy - MM - dd - HH - mm: 每分钟更新一个log日志<br />
<span style="color: #000000">log4j.appender.errorlogfile.DatePattern = ' . ' yyyy - MM - dd ' .log ' </span><br />
#文件名称的格式</span><br />
log4j.appender.errorlogfile.layout = org.apache.log4j.PatternLayout<br />
log4j.appender.errorlogfile.layout.ConversionPattern =%d %p [ %c] -&nbsp;&nbsp; %m %n %d</p>
<p><span style="color: #99cc00">#控制台输出：</span><br />
#log4j.rootLogger = INFO,consoleAppender<br />
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender<br />
log4j.appender.consoleAppender.Threshold = ERROR<br />
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout<br />
log4j.appender.consoleAppender.layout.ConversionPattern =%d %-5p %m %n<br />
log4j.appender.consoleAppender.ImmediateFlush = true</p>
<p><span style="color: #99cc00"># 直接输出，不进行缓存 </span><br />
log4j.appender.consoleAppender.Target = System.err <br />
<span style="color: #99cc00"># 默认是System.out方式输出 </span></p>
<p><span style="color: #99cc00">#发送邮件：SMTPAppender</span><br />
<span style="color: #99cc00">#log4j.rootLogger = INFO,MAIL</span><br />
log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender<br />
log4j.appender.MAIL.Threshold = INFO<br />
log4j.appender.MAIL.BufferSize = 10<br />
log4j.appender.MAIL.From = yourmail@gmail.com<br />
log4j.appender.MAIL.SMTPHost = smtp.gmail.com<br />
log4j.appender.MAIL.Subject = Log4J Message<br />
log4j.appender.MAIL.To = yourmail@gmail.com<br />
log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout<br />
log4j.appender.MAIL.layout.ConversionPattern =%d - %c -%-4r [%t] %-5p %c %x - %m %n</p>
<p><span style="color: #99cc00">#数据库：JDBCAppender</span><br />
log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender<br />
log4j.appender.DATABASE.URL = jdbc:oracle:thin:@ 210.51 . 173.94 : 1521 :YDB<br />
log4j.appender.DATABASE.driver = oracle.jdbc.driver.OracleDriver<br />
log4j.appender.DATABASE.user = ydbuser<br />
log4j.appender.DATABASE.password = ydbuser<br />
log4j.appender.DATABASE.sql = INSERT INTO A1 (TITLE3) VALUES ( ' %d - %c %-5p %c %x - %m%n ' )<br />
log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout<br />
log4j.appender.DATABASE.layout.ConversionPattern =% d -&nbsp;&nbsp; % c -%- 4r [ % t] %- 5p % c % x -&nbsp;&nbsp; % m % n</p>
<p>&nbsp;</p>
  <img src ="http://www.blogjava.net/Reg/aggbug/302785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2009-11-18 13:00 <a href="http://www.blogjava.net/Reg/archive/2009/11/18/302785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JNI之C++调用Java类 —— java.lang.String</title><link>http://www.blogjava.net/Reg/archive/2009/11/18/302772.html</link><dc:creator>艾波</dc:creator><author>艾波</author><pubDate>Wed, 18 Nov 2009 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/Reg/archive/2009/11/18/302772.html</guid><wfw:comment>http://www.blogjava.net/Reg/comments/302772.html</wfw:comment><comments>http://www.blogjava.net/Reg/archive/2009/11/18/302772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Reg/comments/commentRss/302772.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Reg/services/trackbacks/302772.html</trackback:ping><description><![CDATA[<p><a href="http://blog.csdn.net/tyrone1979/archive/2006/07/19/942871.aspx">原文出處</a></p>
<p>JNI之C++调用Java类 —— java.lang.String</p>
<p>&nbsp;&nbsp;&nbsp; 为什么要用C++调用Java类？很难回答，写着文章只是觉得JNI很有意思。于是开始编写一段使用VC++在Windows系统里调用java的String类，在C++里调用String类内的一些方法。</p>
<p>&nbsp;&nbsp;&nbsp; JNI已经被开发了很多年，而在我2年多的Java编程时间里从来没有接触过。直到最近研究JVM实现原理才注意到JNI。 JNI既Java Native Interface，Native这个词我见过我认为最恰当的翻译就是原生。原生的意思就是来自系统自己的，原汁原味的东西，例如Win32 API。Java类需要在虚拟机上运行，也就不是原生的，同样.NET Framework也不是原生的。JNI也就是Java原生接口。关于JNI的规范，以及为什么要使用它，它能做些什么，都在http://java.sun.com/j2se/1.4.2/docs/guide/jni/spec/jniTOC.html里记述着。</p>
<p>&nbsp;&nbsp;&nbsp; JNI是规范，它规定了虚拟机的接口，而把具体的实现留给开发者。</p>
<p>&nbsp;&nbsp;&nbsp; JVM的实现不是唯一的，目前存在很多种Java虚拟机，Sun Hotspot，IBM JDK，还有HP的，Kaffe等等。最流行的就是Sun的Hotspot，最复杂的就是IBM JDK，这是IBM的一贯作风。本文不讨论JVM的实现，只关注JNI。如果您安装了Sun的JDK，您就能在[JAVA_HOME]\include目录下找到jni.h。这个头文件就是虚拟机的唯一接口，你可以调用它声明的函数创建一个JVM。</p>
<p>&nbsp;&nbsp;&nbsp; 在说明C++调用Java类之前，我想先演示一下如果编写Java Native Method。</p>
<p>1．编写带有Native方法的Java类</p>
<p>package org.colimas.jni.test;</p>
<p>public class JniTest {</p>
<p>&nbsp;&nbsp;&nbsp; static { System.loadLibrary("JniTestImpl"); }&nbsp; //JVM调用JniTestImpl.dll</p>
<p>&nbsp;&nbsp;&nbsp; public JniTest(){<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; //原生方法<br />
&nbsp;&nbsp;&nbsp; public native void print(String str);</p>
<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp; * @param args<br />
&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JniTest test=new JniTest();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test.print("hello JVM"); //调用原生方法<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>2．使用javah生成c语言头文件。</p>
<p>javah -jni org.colimas.jni.test.JniTest</p>
<p>目录里多了一个org_colimas_jni_test_JniTest.h文件，打开文件，内容如下:</p>
<p>/* DO NOT EDIT THIS FILE - it is machine generated */</p>
<p>#include &lt;jni.h&gt;</p>
<p>/* Header for class org_colimas_jni_test_JniTest */</p>
<p><br />
#ifndef _Included_org_colimas_jni_test_JniTest<br />
#define _Included_org_colimas_jni_test_JniTest<br />
#ifdef __cplusplus</p>
<p>extern "C" {</p>
<p>#endif</p>
<p>/*<br />
&nbsp;* Class:&nbsp;&nbsp;&nbsp;&nbsp; org_colimas_jni_test_JniTest<br />
&nbsp;* Method:&nbsp;&nbsp;&nbsp; print<br />
&nbsp;* Signature: (Ljava/lang/String;)V<br />
&nbsp;*/</p>
<p>JNIEXPORT void JNICALL Java_org_colimas_jni_test_JniTest_print<br />
&nbsp; (JNIEnv *, jobject, jstring);</p>
<p>#ifdef __cplusplus<br />
}</p>
<p>#endif<br />
#endif</p>
<p><br />
其中的Java_org_colimas_jni_test_JniTest_print就是JniTest类里面的print原生方法的C语言声明。</p>
<p>3．编写C代码实现原生方法print</p>
<p>#include &lt;jni.h&gt;<br />
#include "org_colimas_jni_test_JniTest.h" //javah生成的头文件<br />
#include &lt;stdio.h&gt;</p>
<p>JNIEXPORT void JNICALL Java_org_colimas_jni_test_JniTest_print<br />
&nbsp; (JNIEnv *env, jobject object,jstring str)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获得字符串<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const char * txt=(*env)-&gt;GetStringUTFChars(env,str,0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%s\n",txt); //打印到控制台<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
}</p>
<p><br />
参数JNIEnv *env，是JNI里最重要的变量。Java.exe创建JVM，之后JVM生成一个env，该env相当于JVM内的Session，可以完成创建Java对象，调用类方法，获得类的属性等等。</p>
<p>在这里env将方法的参数Str从JNI的jstring类型转换为常数char数组。</p>
<p>4．编译</p>
<p>cl&nbsp; /Ic:\j2sdk1.4.2_10\include /Ic:\j2sdk1.4.2_10\include\win32 /c&nbsp; JniTestImpl.c</p>
<p>5．连接为DLL</p>
<p>link /dll JniTestImpl.obj</p>
<p>6．设置PATH</p>
<p>set PATH=C:\MyProject\Colimas\CD\JNI\MyJNI;%PATH%</p>
<p>7．运行</p>
<p>java org.colimas.jni.test.JniTest</p>
<p>返回结果</p>
<p>hello JVM</p>
<p>结束</p>
<p>&nbsp;&nbsp;&nbsp; 以上是实现Java原生方法的开发过程，下面进入正题，使用C++调用Java的java.lang.String类。</p>
<p>1. Object类出创建JVM。</p>
<p>使用Java类之前必须要创建JVM环境。JDK由java.exe来完成。本文有Object类的静态方法BeginJVM来创建，用EndJVM来关闭。</p>
<p>创建JVM之后会在创建2个变量，分别是JNIEnv* env和JavaVM* jvm，JNIEnv上文已经说明，JavaVM，顾名思义，代表Java虚拟机，用它来关闭JVM。</p>
<p>Object类的头文件</p>
<p>#include "jni.h"</p>
<p>class Object<br />
{<br />
public:<br />
&nbsp;&nbsp;&nbsp; static bool BeginJVM();<br />
&nbsp;&nbsp;&nbsp; static bool EndJVM();<br />
&nbsp;&nbsp;&nbsp; Object();<br />
&nbsp;&nbsp;&nbsp; virtual ~Object();</p>
<p>protected:<br />
&nbsp;&nbsp;&nbsp; static JNIEnv* env;<br />
&nbsp;&nbsp;&nbsp; static JavaVM* jvm;<br />
};</p>
<p>object.cpp代码</p>
<p>#include "stdafx.h"<br />
#include "JavaClasses.h"<br />
#include "Object.h"</p>
<p>Object::Object()<br />
{}</p>
<p>Object::~Object()<br />
{}</p>
<p>JNIEnv* Object::env=NULL;<br />
JavaVM* Object::jvm=NULL;</p>
<p>//创建JVM</p>
<p>bool Object::BeginJVM()<br />
{</p>
<p>&nbsp;&nbsp;&nbsp; JavaVMOption options[3];<br />
&nbsp;&nbsp;&nbsp; JavaVMInitArgs vm_args;</p>
<p>&nbsp;&nbsp;&nbsp; //各种参数<br />
&nbsp;&nbsp;&nbsp; options[0].optionString="-Xmx128m";<br />
&nbsp;&nbsp;&nbsp; options[1].optionString="-Verbose:gc";<br />
&nbsp;&nbsp;&nbsp; options[2].optionString="-Djava.class.path=.";</p>
<p>&nbsp;&nbsp;&nbsp; vm_args.version=JNI_VERSION_1_2;<br />
&nbsp;&nbsp;&nbsp; vm_args.options=options;<br />
&nbsp;&nbsp;&nbsp; vm_args.nOptions=3;</p>
<p>&nbsp;&nbsp;&nbsp; //创建JVM，获得jvm和env<br />
&nbsp;&nbsp;&nbsp; int res = JNI_CreateJavaVM(&amp;jvm,(void **)&amp;env, &amp;vm_args);<br />
&nbsp;&nbsp;&nbsp; return true;<br />
}</p>
<p>bool Object::EndJVM()<br />
{<br />
&nbsp;&nbsp;&nbsp; //关闭JVM<br />
&nbsp;&nbsp;&nbsp; jvm-&gt;DestroyJavaVM();<br />
&nbsp;&nbsp;&nbsp; return true;<br />
}</p>
<p>2. C++的String类调用java.lang.String类方法</p>
<p>编写C++版的String类，调用java String类方法。调用的方法如下：</p>
<p>&nbsp;&nbsp;&nbsp; String&nbsp; replaceAll(String regex, String replacement);</p>
<p>&nbsp;&nbsp;&nbsp; boolean endsWith(String str);</p>
<p>&nbsp;&nbsp;&nbsp; int indexOf(String str);</p>
<p>&nbsp;&nbsp;&nbsp; int compareTo(String anotherString);</p>
<p>&nbsp;&nbsp;&nbsp; char charAt(int i);</p>
<p>String的头文件:</p>
<p>class String&nbsp; :public Object<br />
{<br />
public:<br />
//与要调用的Java方法名一致。<br />
&nbsp;&nbsp;&nbsp; const char * replaceAll(char *regex,char *replacement);</p>
<p>&nbsp;&nbsp;&nbsp; bool endsWith(char * str);</p>
<p>&nbsp;&nbsp;&nbsp; int indexOf(char * str);</p>
<p>&nbsp;&nbsp;&nbsp; int compareTo(char *anotherString);</p>
<p>&nbsp;&nbsp;&nbsp; char charAt(int i);</p>
<p>&nbsp;&nbsp;&nbsp; String(char *str);</p>
<p>&nbsp;&nbsp;&nbsp; virtual ~String();<br />
};</p>
<p>实现：</p>
<p>#include "stdafx.h"<br />
#include "String.h"<br />
#include "jni.h"</p>
<p>using namespace std;</p>
<p>jclass clazz;&nbsp;&nbsp;&nbsp; //全局变量，用来传递class<br />
jobject object;&nbsp; //全局变量，用来传递object<br />
String::String(char *str)<br />
{<br />
&nbsp;&nbsp;&nbsp; jstring jstr;</p>
<p>&nbsp;&nbsp;&nbsp; if (Object::env ==NULL){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "JVM is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; //获得java.lang.String类<br />
&nbsp;&nbsp;&nbsp; clazz=Object::env-&gt;FindClass("java/lang/String");</p>
<p>&nbsp;&nbsp;&nbsp; if (clazz ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Class is not found" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; //获得String(String str)构造体<br />
&nbsp;&nbsp;&nbsp; jmethodID mid= Object::env-&gt;GetMethodID(clazz,"&lt;init&gt;", "(Ljava/lang/String;)V");</p>
<p>&nbsp;&nbsp;&nbsp; if (mid==0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr&lt;&lt; "GetMethodID Error for class" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; //将字符串封装为jstring。<br />
&nbsp;&nbsp;&nbsp; jstr = Object::env-&gt;NewStringUTF(str);</p>
<p>&nbsp;&nbsp;&nbsp; if (jstr == 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "Out of memory" &lt;&lt;endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "invoking method" &lt;&lt; endl;</p>
<p>&nbsp;&nbsp;&nbsp; //创建一个java.lang.String对象。<br />
&nbsp;&nbsp;&nbsp; object=Object::env-&gt;NewObject(clazz,mid,jstr);<br />
}</p>
<p>String::~String()<br />
{}</p>
<p>char String::charAt(int i)<br />
{<br />
&nbsp;&nbsp;&nbsp; if (Object::env ==NULL){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "JVM is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (clazz ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Class is not found" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (object ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "String object is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jmethodID mid;</p>
<p>&nbsp;&nbsp;&nbsp; //获得charAt方法，（I）C表示 参数为int型，返回char型。详细参见JNI规范<br />
&nbsp;&nbsp;&nbsp; mid = Object::env-&gt;GetMethodID(clazz,"charAt", "(I)C");</p>
<p>&nbsp;&nbsp;&nbsp; if (mid==0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr&lt;&lt; "GetMethodID Error for class" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jint ji=i;</p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "invoking method" &lt;&lt; endl;</p>
<p>&nbsp;&nbsp;&nbsp; //调用charAt<br />
&nbsp;&nbsp;&nbsp; jchar z = Object::env-&gt;CallCharMethod(object,mid,i);</p>
<p>&nbsp;&nbsp;&nbsp; //返回结果。<br />
&nbsp;&nbsp;&nbsp; return z;<br />
}</p>
<p><br />
int String::compareTo(char *anotherString)<br />
{</p>
<p>&nbsp;&nbsp;&nbsp; if (Object::env ==NULL){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "JVM is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (clazz ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Class is not found" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (object ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "String object is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jmethodID mid;</p>
<p>&nbsp;&nbsp;&nbsp; //(Ljava/lang/String;)I表示参数为java.lang.String，返回int<br />
&nbsp;&nbsp;&nbsp; mid= Object::env-&gt;GetMethodID(clazz,"compareTo", "(Ljava/lang/String;)I");</p>
<p>&nbsp;&nbsp;&nbsp; if (mid==0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr&lt;&lt; "GetMethodID Error for class" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jstring jstr = Object::env-&gt;NewStringUTF(anotherString);<br />
&nbsp;&nbsp;&nbsp; cout &lt;&lt; "invoking method" &lt;&lt; endl;</p>
<p>&nbsp;&nbsp;&nbsp; //调用方法<br />
&nbsp;&nbsp;&nbsp; jint z=Object::env-&gt;CallIntMethod(object,mid,jstr);</p>
<p>&nbsp;&nbsp;&nbsp; //返回结果<br />
&nbsp;&nbsp;&nbsp; return z;<br />
}</p>
<p><br />
int String::indexOf(char *str)<br />
{<br />
&nbsp;&nbsp;&nbsp; if (Object::env ==NULL){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "JVM is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (clazz ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Class is not found" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (object ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "String object is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jmethodID mid;<br />
&nbsp;&nbsp;&nbsp; mid= Object::env-&gt;GetMethodID(clazz,"indexOf", "(Ljava/lang/String;)I");</p>
<p>&nbsp;&nbsp;&nbsp; if (mid==0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr&lt;&lt; "GetMethodID Error for class" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jstring jstr = Object::env-&gt;NewStringUTF(str);<br />
&nbsp;&nbsp;&nbsp; cout &lt;&lt; "invoking method" &lt;&lt; endl;</p>
<p>&nbsp;&nbsp;&nbsp; jint z=Object::env-&gt;CallIntMethod(object,mid,jstr);<br />
&nbsp;&nbsp;&nbsp; return z;<br />
}</p>
<p><br />
bool String::endsWith(char *str)<br />
{</p>
<p>&nbsp;&nbsp;&nbsp; if (Object::env ==NULL){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "JVM is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (clazz ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Class is not found" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (object ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "String object is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jmethodID mid;<br />
&nbsp;&nbsp;&nbsp; mid= Object::env-&gt;GetMethodID(clazz,"endsWith", "(Ljava/lang/String;)Z");</p>
<p>&nbsp;&nbsp;&nbsp; if (mid==0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr&lt;&lt; "GetMethodID Error for class" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jstring jstr = Object::env-&gt;NewStringUTF(str);<br />
&nbsp;&nbsp;&nbsp; cout &lt;&lt; "invoking method" &lt;&lt; endl;</p>
<p>&nbsp;&nbsp;&nbsp; bool z = Object::env-&gt;CallBooleanMethod(object,mid,jstr);<br />
&nbsp;&nbsp;&nbsp; return z;<br />
}</p>
<p><br />
const char * String::replaceAll(char *regex, char *replacement)<br />
{<br />
&nbsp;&nbsp;&nbsp; if (Object::env ==NULL){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "JVM is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (clazz ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Class is not found" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; if (object ==0 ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "String object is not created" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jmethodID mid;<br />
&nbsp;&nbsp;&nbsp; mid= Object::env-&gt;GetMethodID(clazz,"replaceAll", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");</p>
<p>&nbsp;&nbsp;&nbsp; if (mid==0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr&lt;&lt; "GetMethodID Error for class" &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; jvalue array[2];<br />
&nbsp;&nbsp;&nbsp; jstring jreg = Object::env-&gt;NewStringUTF(regex);<br />
&nbsp;&nbsp;&nbsp; jstring jstr = Object::env-&gt;NewStringUTF(replacement);</p>
<p>&nbsp;&nbsp;&nbsp; array[0].l=jreg;<br />
&nbsp;&nbsp;&nbsp; array[1].l=jstr;</p>
<p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "invoking method" &lt;&lt; endl;</p>
<p>&nbsp;&nbsp;&nbsp; //传入参数，调用replaceAll方法<br />
&nbsp;&nbsp;&nbsp; jobject z=Object::env-&gt;CallObjectMethodA(object,mid,array);<br />
&nbsp;&nbsp;&nbsp; const char *result=Object::env-&gt;GetStringUTFChars((jstring)z, 0);</p>
<p>&nbsp;&nbsp;&nbsp; return (const char *)result;<br />
}</p>
<p>3．测试</p>
<p>编写测试代码</p>
<p>using namespace std;</p>
<p>int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])<br />
{<br />
&nbsp;&nbsp;&nbsp; int nRetCode = 0;</p>
<p>&nbsp;&nbsp;&nbsp; if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr &lt;&lt; _T("Fatal Error: MFC initialization failed") &lt;&lt; endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nRetCode = 1;<br />
&nbsp;&nbsp;&nbsp; } else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //创建JVM<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object::BeginJVM();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String test("hello");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //调用replaceAll<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const char *result = test.replaceAll("l","z");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //返回结果<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt; result &lt;&lt;endl;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //关闭JVM<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object::EndJVM();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return nRetCode;<br />
}</p>
<p><br />
4．运行</p>
<p>编译需要 jni.h和jvm.lib文件。</p>
<p>jni.h在[JAVA_HOME]\include</p>
<p>jvm.lib在[JAVA_HOME]\lib</p>
<p>运行需要jvm.dll</p>
<p>jvm.dll在[JAVA_HOME]\ jre\bin\client</p>
<p>运行结果如下：</p>
<p>invoking method</p>
<p>invoking method</p>
<p>hezzo</p>
<p>Press any key to continue</p>
<p>尽管本文的代码很有意思，但我还没有想到有什么价值，以及应用到实际项目中的理由。</p>
<p><br />
本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/onlymilan/archive/2006/07/20/947652.aspx</p>
  <img src ="http://www.blogjava.net/Reg/aggbug/302772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Reg/" target="_blank">艾波</a> 2009-11-18 11:01 <a href="http://www.blogjava.net/Reg/archive/2009/11/18/302772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>