﻿<?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-I love java-文章分类-java</title><link>http://www.blogjava.net/baizhihui19870626/category/51116.html</link><description>记录本</description><language>zh-cn</language><lastBuildDate>Wed, 19 Sep 2012 19:47:50 GMT</lastBuildDate><pubDate>Wed, 19 Sep 2012 19:47:50 GMT</pubDate><ttl>60</ttl><item><title>web.xml作用 </title><link>http://www.blogjava.net/baizhihui19870626/articles/388072.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 19 Sep 2012 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/388072.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/388072.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/388072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/388072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/388072.html</trackback:ping><description><![CDATA[<p>web工程中的web.xml文件有什么作用呢？它是每个web.xml工程都必须的吗？</p>
<p>一个web中完全可以没有web.xml文件，也就是说，web.xml文件并不是web工程必须的。</p>
<p><br />那什么时候需要，什么时候可以不需要呢？</p>
<p>要想回答上面的问题，得先了解web.xml文件使用来干什么的。web.xml文件是用来配置：欢迎页、servlet、filter等的。当你的web工程没用到这些时，你可以不用web.xml文件来配置你的web工程。</p>
<p>那么web.xml能做的所有事情都有那些？</p>
<p>其实，web.xml的模式(Schema)文件中定义了多少种标签元素，web.xml中就可以出现它的模式文件所定义的标签元素，它就能拥有定义出来的那些功能。web.xml的模式文件是由Sun公司定义的，每个web.xml文件的根元素&lt;web-app&gt;中，都必须标明这个web.xml使用的是哪个模式文件。如：<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.5" <br />xmlns="<a href="http://java.sun.com/xml/ns/javaee" rel="nofollow">http://java.sun.com/xml/ns/javaee</a>" <br />xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" rel="nofollow">http://www.w3.org/2001/XMLSchema-instance</a>" <br />xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/javaee" rel="nofollow">http://java.sun.com/xml/ns/javaee</a> <br /><a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" rel="nofollow">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</a>"&gt;<br />&lt;/web-app&gt;</p>
<p>而且web.xml的模式文件中定义的标签并不是定死的，模式文件也是可以改变的，一般来说，随着web.mxl模式文件的版本升级，里面定义的功能会越来越复杂，也即标签元素的种类会越来越多，但有些是不常用的，我们只需记住一些常用的就可以了。</p>
<p><br />下面列出web.xml常用的标签元素及这些标签元素的功能：</p>
<p>1、指定欢迎页面，例如：<br />&lt;welcome-file-list&gt;<br />&lt;welcome-file-list&gt;<br />&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />&lt;welcome-file&gt;index1.jsp&lt;/welcome-file&gt;<br />&lt;/welcome-file-list&gt;<br />上面的例子指定了2个欢迎页面，显示时按顺序从第一个找起，如果第一个存在，就显示第一个，后面的不起作用。如果第一个不存在，就找第二个，以此类推。</p>
<p>关于欢迎页面：</p>
<p>访问一个网站时，默认看到的第一个页面就叫欢迎页，一般情况下是由首页来充当欢迎页的。一般情况下，我们会在web.xml中指定欢迎页。但web.xml并不是一个Web的必要文件，没有web.xml，网站仍然是可以正常工作的。只不过网站的功能复杂起来后，web.xml的确有非常大用处，所以，默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件。<br />对于tomcat来说，当你只指定一个web的根名，没有指定具体页面，去访问时一个web时， 如果web.xml文件中配置了欢迎页，那么就返回指定的那个页面作为欢迎页，而在文中没有web.xml文件，或虽然有web.xml，但web.xml也没指定欢迎页的情况下，它默认先查找index.html文件，如果找到了，就把index.html作为欢迎页还回给浏览器。如果没找到index.html，tomcat就去找index.jsp。找到index.jsp就把它作为欢迎页面返回。而如果index.html和index.jsp都没找到，又没有用web.xml文件指定欢迎页面，那此时tomcat就不知道该返回哪个文件了，它就显示The requested resource (/XXX) is not available的页面。其中XXX表示web的根名。但如果你指定了具体页面，是可以正常访问的。</p>
<p>2、命名与定制URL。我们可以为Servlet和JSP文件命名并定制URL,其中定制URL是依赖一命名的，命名必须在定制URL前。下面拿serlet来举例：<br />(1)、为Servlet命名：<br />&lt;servlet&gt;<br />&lt;servlet-name&gt;servlet1&lt;/servlet-name&gt;<br />&lt;servlet-class&gt;net.test.TestServlet&lt;/servlet-class&gt;<br />&lt;/servlet&gt;</p>
<p>(2)、为Servlet定制URL、<br />&lt;servlet-mapping&gt;<br />&lt;servlet-name&gt;servlet1&lt;/servlet-name&gt;<br />&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br />&lt;/servlet-mapping&gt;</p>
<p><br />3、定制初始化参数：可以定制servlet、JSP、Context的初始化参数，然后可以再servlet、JSP、Context中获取这些参数值。下面哪servlet来举例：<br />&lt;servlet&gt;<br />&lt;servlet-name&gt;servlet1&lt;/servlet-name&gt;<br />&lt;servlet-class&gt;net.test.TestServlet&lt;/servlet-class&gt;<br />&lt;init-param&gt;<br />&lt;param-name&gt;userName&lt;/param-name&gt;<br />&lt;param-value&gt;Tommy&lt;/param-value&gt;<br />&lt;/init-param&gt;<br />&lt;init-param&gt;<br />&lt;param-name&gt;E-mail&lt;/param-name&gt;<br />&lt;param-value&gt;Tommy@163.com&lt;/param-value&gt;<br />&lt;/init-param&gt;<br />&lt;/servlet&gt;<br />经过上面的配置，在servlet中能够调用getServletConfig().getInitParameter("param1")获得参数名对应的值。</p>
<p>4、指定错误处理页面，可以通过&#8220;异常类型&#8221;或&#8220;错误码&#8221;来指定错误处理页面。<br />&lt;error-page&gt;<br />&lt;error-code&gt;404&lt;/error-code&gt;<br />&lt;location&gt;/error404.jsp&lt;/location&gt;<br />&lt;/error-page&gt;<br />-----------------------------<br />&lt;error-page&gt;<br />&lt;exception-type&gt;java.lang.Exception&lt;exception-type&gt;<br />&lt;location&gt;/exception.jsp&lt;location&gt;<br />&lt;/error-page&gt;</p>
<p>5、设置过滤器：比如设置一个编码过滤器，过滤所有资源<br />&lt;filter&gt;<br />&lt;filter-name&gt;XXXCharaSetFilter&lt;/filter-name&gt;<br />&lt;filter-class&gt;net.test.CharSetFilter&lt;/filter-class&gt;<br />&lt;/filter&gt;<br />&lt;filter-mapping&gt;<br />&lt;filter-name&gt;XXXCharaSetFilter&lt;/filter-name&gt;<br />&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&lt;/filter-mapping&gt;</p>
<p>6、设置监听器：<br />&lt;listener&gt;<br />&lt;listener-class&gt;net.test.XXXLisenet&lt;/listener-class&gt;<br />&lt;/listener&gt;</p>
<p>7、设置会话(Session)过期时间，其中时间以分钟为单位，假如设置60分钟超时：<br />&lt;session-config&gt;<br />&lt;session-timeout&gt;60&lt;/session-timeout&gt;<br />&lt;/session-config&gt;</p>
<p>除了这些标签元素之外，还可以往web.xml中添加那些标签元素呢，那些标签元素都能起什么作用呢？我们只要去查看web.xml的模式文件就能知道。直接看模式文件看不懂，可以找一些中文教程来看看。</p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/388072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-09-19 15:15 <a href="http://www.blogjava.net/baizhihui19870626/articles/388072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>why在重写equals时还必须重写hashcode方法</title><link>http://www.blogjava.net/baizhihui19870626/articles/388065.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 19 Sep 2012 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/388065.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/388065.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/388065.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/388065.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/388065.html</trackback:ping><description><![CDATA[<p align="left">&nbsp;</p>
<div id="cnblogs_post_body">
<p>首先我们先来看下String类的源码：可以发现String是重写了Object类的equals方法的，并且也重写了hashcode方法</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码" href="javascript:void(0);"><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif" /></a></span></div><pre><span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> equals(Object anObject) {
    </span><span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span> ==<span style="color: #000000"> anObject) {
        </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
    }
    </span><span style="color: #0000ff">if</span> (anObject <span style="color: #0000ff">instanceof</span><span style="color: #000000"> String) {
        String anotherString </span>=<span style="color: #000000"> (String)anObject;
        </span><span style="color: #0000ff">int</span> n =<span style="color: #000000"> count;
        </span><span style="color: #0000ff">if</span> (n ==<span style="color: #000000"> anotherString.count) {
        </span><span style="color: #0000ff">char</span> v1[] =<span style="color: #000000"> value;
        </span><span style="color: #0000ff">char</span> v2[] =<span style="color: #000000"> anotherString.value;
        </span><span style="color: #0000ff">int</span> i =<span style="color: #000000"> offset;
        </span><span style="color: #0000ff">int</span> j =<span style="color: #000000"> anotherString.offset;
        </span><span style="color: #0000ff">while</span> (n-- != 0<span style="color: #000000">) {
            </span><span style="color: #0000ff">if</span> (v1[i++] != v2[j++<span style="color: #000000">])
            </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
        }
        </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
        }
    }
    </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
    }


</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> hashCode() {
    </span><span style="color: #0000ff">int</span> h =<span style="color: #000000"> hash;
    </span><span style="color: #0000ff">if</span> (h == 0<span style="color: #000000">) {
        </span><span style="color: #0000ff">int</span> off =<span style="color: #000000"> offset;
        </span><span style="color: #0000ff">char</span> val[] =<span style="color: #000000"> value;
        </span><span style="color: #0000ff">int</span> len =<span style="color: #000000"> count;

            </span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i &lt; len; i++<span style="color: #000000">) {
                h </span>= 31*h + val[off++<span style="color: #000000">];
            }
            hash </span>=<span style="color: #000000"> h;
        }
        </span><span style="color: #0000ff">return</span><span style="color: #000000"> h;
    }</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码" href="javascript:void(0);"><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif" /></a></span></div></div>
<p>那为什么在重写equals方法时都要重写equals方法呢：<br />首先equals与hashcode间的关系是这样的：</p>
<p>1、如果两个对象相同（即用equals比较返回true），那么它们的hashCode值一定要相同；</p>
<p>2、如果两个对象的hashCode相同，它们并不一定相同(即用equals比较返回false) </p>
<p>自我的理解：由于为了提高程序的效率才实现了hashcode方法，先进行hashcode的比较，如果不同，那没就不必在进行equals的比较了，这样就大大减少了equals比较的</p>
<p>次数，这对比需要比较的数量很大的效率提高是很明显的，一个很好的例子就是在集合中的使用；</p>
<p>我们都知道java中的List集合是有序的，因此是可以重复的，而set集合是无序的，因此是不能重复的，那么怎么能保证不能被放入重复的元素呢，但靠equals方法一样比较的</p>
<p>话，如果原来集合中以后又10000个元素了，那么放入10001个元素，难道要将前面的所有元素都进行比较，看看是否有重复，欧码噶的，这个效率可想而知，因此hashcode</p>
<p>就应遇而生了，java就采用了hash表，利用哈希算法（也叫散列算法），就是将对象数据根据该对象的特征使用特定的算法将其定义到一个地址上，那么在后面定义进来的数据</p>
<p>只要看对应的hashcode地址上是否有值，那么就用equals比较，如果没有则直接插入，只要就大大减少了equals的使用次数，执行效率就大大提高了。</p>
<p>继续上面的话题，为什么必须要重写hashcode方法，其实简单的说就是为了保证同一个对象，保证在equals相同的情况下hashcode值必定相同，如果重写了equals而未重写</p>
<p>hashcode方法，可能就会出现两个没有关系的对象equals相同的（因为equal都是根据对象的特征进行重写的），但hashcode确实不相同的</p></div>
<p align="left">&nbsp;</p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/388065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-09-19 14:20 <a href="http://www.blogjava.net/baizhihui19870626/articles/388065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Vector和ArrayList区别   Hashtable和HashMap区别  ArrayList和LinkedList区别</title><link>http://www.blogjava.net/baizhihui19870626/articles/388061.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 19 Sep 2012 05:51:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/388061.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/388061.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/388061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/388061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/388061.html</trackback:ping><description><![CDATA[<p style="text-align: left; padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 0px; margin: 0px 0px 5px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/21px simsun; word-wrap: normal; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; color: rgb(73,73,73); word-break: normal; border-left-width: 0px; word-spacing: 0px; padding-top: 0px; border-image: initial; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><font style="line-height: 36px; word-wrap: normal; word-break: normal" color="#ff0000" size="5">Vector和ArrayList区别</font><br />Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。<br />Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe)，而ArrayList的方法不是，<br />由于线程的同步必然要影响性能，因此,<br />ArrayList的性能比Vector好。<br />当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它<br />的容量翻倍,而ArrayList只增加50%的大小，这样,ArrayList就有利<br />于节约内存空间。<br /><font style="line-height: 36px; word-wrap: normal; word-break: normal" color="#ff0000" size="5">Hashtable和<font style="line-height: 36px; word-wrap: normal; word-break: normal" color="#ff0000">HashMap区别</font></font></p>
<p style="text-align: left; padding-bottom: 0px; border-right-width: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); list-style-type: none; text-indent: 0px; margin: 0px 0px 5px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/21px simsun; word-wrap: normal; white-space: normal; orphans: 2; border-top-width: 0px; border-bottom-width: 0px; color: rgb(73,73,73); word-break: normal; border-left-width: 0px; word-spacing: 0px; padding-top: 0px; border-image: initial; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">a.Hashtable是继承自陈旧的Dictionary类的，HashMap继承自AbstractMap类同时是Java 1.2引进的Map接口的一个实现。<br />　　b.也许最重要的不同是Hashtable的方法是同步的，而HashMap的方法不是。这就意味着，然你可以不用采取任何特殊的行为就可以在一个 多线程的应用程序中用一个Hashtable，但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法，它创建一个线程安全的Map对象，并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时，你不能切断Hashtable中的同步（比如在一个单线程的应用程序中），而且同步增加了很多处理费用。<br />　　c.第三点不同是，只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key，但任意数量的条目可以是空的value。这就是说，如果在表中没有发现搜索键，或者如果发现了搜索键，但它是一个空的值，那么get()将返回null。如果有必要，用containKey()方法来区别这两种情况。<br />　　d.HashMap去掉了Hashtable的contains方法，保留了containsValue和containsKey方法<br />　　e.Hashtable中hash数组默认大小是11，增加的方式是 old*2+1。HashMap中hash数组的默认大小是16，而且一定是2的指数<br /><br /><font style="line-height: 36px; word-wrap: normal; word-break: normal" color="#ff0000" size="5">ArrayList和LinkedList区别</font><br />对于处理一列数据项,Java提供了两个类ArrayList和LinkedList,ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组，但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构，所以,它们在性能上有很大的差别。<br />从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间，所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能<br />而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止，所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。<br />如果在编程中,1，2两种情形交替出现,这时,你可以考虑使用List这样的通用接口,而不用关心具体的实现，在具体的情形下,它的性能由具体的实现来保证。<br /><font style="line-height: 21px; word-wrap: normal; word-break: normal" color="#ff0000">配置集合类的初始大小</font><br />在Java集合框架中的大部分类的大小是可以随着元素个数的增加而相应的增加的，我们似乎不用关心它的初始大小,但如果我们考虑类的性能问题时,就一定要考虑尽可能地设置好集合对象的初始大小,这将大大提高代码的性能。<br />比如,Hashtable缺省的初始大小为101,载入因子为0.75,即如果其中的元素个数超过75个,它就必须增加大小并重新组织元素，所以,如果你知道在创建一个新的Hashtable对象时就知道元素的确切数目如为110,那么,就应将其初始大小设为110/0.75=148,这样,就可以避免重新组织内存并增加大小</p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/388061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-09-19 13:51 <a href="http://www.blogjava.net/baizhihui19870626/articles/388061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中字符集的问题 </title><link>http://www.blogjava.net/baizhihui19870626/articles/388054.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 19 Sep 2012 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/388054.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/388054.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/388054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/388054.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/388054.html</trackback:ping><description><![CDATA[<p><span style="font-size: 18px">1、JVM中单个字符占用的字节长度跟编码方式有关，而默认编码方式又跟平台是一一对应的或说平台决定了默认字符编码方式；</span></p>
<p><span style="font-size: 18px">2、<strong><span style="color: #ff0000">对于单个字符：ISO-8859-1单字节编码，GBK双字节编码，UTF-8三字节编码</span></strong>；<strong><span style="color: #ff0000">因此中文平台(中文平台默认字符集编码GBK)下一个中文字符占2个字节，而英文平台(英文平台默认字符集编码Cp1252(类似于ISO-8859-1))。</span></strong></span></p>
<p><span style="font-size: 18px">3、<strong>g<span style="color: #ff0000">etBytes()、getBytes(encoding)函数的作用是使用系统默认或者指定的字符集编码方式，将字符串编码成字节数组</span>。</strong></span></p>
<p><span style="font-size: 18px">编码方式决定字节长度；<strong><span style="background-color: rgb(255,255,255); color: #ff0000">在中文平台下，默认的字符集编码是GBK</span></strong><span style="color: #ff0000">，</span>此时如果使用getBytes()或getBytes("GBK")，<strong><span style="color: #ff0000">则按照GBK的编码规则将每个中文字符用2个byte表示</span></strong>。<strong><span style="color: #ff0000">所以我们看到"中文"最终GBK编码结果就是： -42 -48 -50 -60 。-42和-48代表了"中"字，而"-50"和"-60"则代表了"文"字。</span></strong></span></p>
<p><span style="font-size: 18px">在中文平台下，<span style="background-color: rgb(255,255,255)"><span style="color: #ff0000">如果指定的字符集编码是UTF-8，那么按照UTF-8对中文的编码规则：每个中文用3个字节表示，那么"中文"这两个字符最终被编码成：-28 -72 -83、-26 -106 -121两组。每3个字节代表一个中文字符。</span></span></span></p>
<p><span style="font-size: 18px"><span style="background-color: rgb(255,255,255)"><span style="color: #ff0000"><strong>在中文平台下，如果指定的字符集编码是ISO-8859-1，由于此字符集是单字节编码，所以使用getBytes("ISO-8859-1")时，每个字符只取一个字节，每个汉字只取到了一半的字符。另外一半的字节丢失了。由于这一半的字符在字符集中找不到对应的字符，所以默认使用编码63代替，也就是?。</strong></span></span></span></p>
<p><span style="font-size: 18px"><strong><span style="color: #ff0000">在英文平台下，默认的字符集编码是Cp1252(类似于ISO-8859-1</span></strong>)，<strong><span style="color: #ff0000">如果使用GBK、UTF-8进行编码，得到的字节数组依然是正确的(GBK4个字节，UTF-8是6个字节)。因为在JVM内部是以Unicode存储字符串的，使用getBytes(encoding)会让JVM进行一次Unicode到指定编码之间的转换。</span></strong>对于GBK，JVM依然会转换成4个字节，对于UTF-8，JVM依然会转换成6个字节。<strong><span style="color: #ff0000">但是对于ISO-8859-1，则由于无法转换(2个字节---&gt;1个字节，截取了一半的字节)，所以转换后的结果是错误的。</span></strong></span></p>
<p><span style="font-size: 18px"><span style="font-weight: bold"><span style="color: #ff0000"></span></span></span></p>
<p><span style="font-size: 18px">在中文平台下，默认的字符集编码是GBK，于是content.getBytes()得到的是什么呢？就是下面这4个字节：</span></p>
<p><span style="font-size: 18px">byte[0] </span><span style="font-size: 18px"></span><span style="font-size: 18px">= -42 hex string = ffffffd6</span></p>
<p><span style="font-size: 18px">byte[1] = -48 hex string = ffffffd0 </span></p>
<p><span style="font-size: 18px">byte[2] = -50 hex string = ffffffce</span></p>
<p><span style="font-size: 18px">byte[3] = -60 hex string = ffffffc4</span></p>
<p><span style="font-size: 18px">如果新的encoding是GBK，那么经过解码后，由于一个字符用2个字节表示。于是最终的结果就是：</span></p>
<p><span style="font-size: 18px">char[0]='中' --- byte[0] + byte[1]</span></p>
<p><span style="font-size: 18px">char[1]='文' --- byte[2] + byte[3]</span></p>
<p><span style="font-size: 18px">如果新的encoding是ISO-8859-1，那么经过解码后，由于一个字符用1个字节表示，于是原来本应该2个字节一起解析的变成单个字节解析，每个字节都代表了一个汉字字符的一半。这一半的字节在ISO-8859-1中找不到对应的字符，就变成了"?"了，最终的结果：</span></p>
<p><span style="font-size: 18px">char[0]='?' ---- byte[0] </span></p>
<p><span style="font-size: 18px">char[1]='?' ---- byte[1] </span></p>
<p><span style="font-size: 18px">char[2]='?' ---- byte[2]</span></p>
<p><span style="font-size: 18px">char[3]='?' ---- byte[3]</span></p>
<p><span style="font-size: 18px">如果新的encoding是UTF-8，那么经过解码后，由于一个字符用3个字节表示，于是原来4个字节的数据无法正常的解析成UTF-8的数据，最终的结果也是每一个都变成"?"。</span></p>
<p><span style="font-size: 18px">char[0]='?' ---- byte[0]</span></p>
<p><span style="font-size: 18px">char[1]='?' ---- byte[1]</span></p>
<p><span style="font-size: 18px">char[2]='?' ---- byte[2] </span></p>
<p><span style="font-size: 18px">char[3]='?' ---- byte[3]</span></p>
<p><span style="font-size: 18px">如果是在英文平台下，由于默认的编码方式是Cp1252，于是content.getBytes()得到的字节都是被截去一半的残留字符，所以我们看到在英文平台下，不论指定的encoding是GBK、UTF-8，其结果和ISO-8859-1都是一样的。</span></p>
<p><span style="font-size: 18px"><strong><span style="color: #ff0000">记住：这个方法再次证明了String的getBytes()方法的危险性，如果我们使用new String(str.getBytes(), encoding)对字符串进行重新编码解码时，我们一定要清楚str.getBytes()方法返回的字节数组的长度、内容到底是什么，因为在接下来使用新的encoding进行编码解码时，Java并不会自动地对字节数组进行扩展以适应新的encoding。而是按照新的编码方法直接对该字节数组进行解析。</span></strong>于是结果就像上面的例子一样，同样是4个原始字节，有些每2个一组进行解析，有些每个一组进行解析，有些每3个一组进行解析。其结果就只能看那种编码方式合适了。</span></p><br />
<p><span style="font-size: 18px"><span style="background-color: rgb(255,255,255)"><span style="color: #ff0000"><strong>结论：</strong></span></span>相同的平台下，同一个中文字符，在不同的编码方式下，得到的是完全不同的字节数组。这些字节数组有可能是正确的(只要该字符集支持中文)，也可能是完全错误的(该字符集不支持中文)。</span></p>
<p><span style="font-size: 18px"><strong><span style="color: #ff0000">记住：不要轻易地使用或滥用String类的getBytes(encoding)方法，更要尽量避免使用getBytes()方法。因为这个方法是平台依赖的，在平台不可预知的情况下完全可能得到不同的结果</span></strong>。<strong><span style="color: #ff0000">如果一定要进行字节编码，则用户要确保encoding的方法就是当初字符串输入时的encoding。</span></strong></span></p>
<p><span style="font-size: 18px">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 18px"><strong><span style="color: #ff0000">和getBytes(encoding)不同，toCharArray()返回的是"自然字符"。但是这个"自然字符"的数目和内容却是由原始的编码方式决定的</span></strong>。</span></p>
<p><span style="font-size: 18px"></span></p>
<p><span style="font-size: 18px">FileWriter是字符流输出流，而OutputStreamWriter是字节流输出流在中文平台下，<strong><span style="color: #ff0000">如果使用FileWriter，不论你如何设置字符集都不会起作用。因为它采用的是默认的系统字符集。即便你设置了System.setProperty("file.encoding", "ISO-8859-1")，或者在运行时给予参数-Dfile.encoding=UTF-8都不会起作用。你会发现它最终还是都已"GB2312"或者"GBK"的方式保存。</span></strong></span></p>
<p><span style="font-size: 18px">在中文平台下，如果使用OutputStreamWriter，则在后台写入时会把字符流转换成字节流，此时指定的编码字符集就起作用了。可以看到在指定GBK、UTF-8的情况下中文可以正常的保存和读取，同时文件按照我们给定的方式保存了。而对于ISO-8859-1则变成了?，这<strong><span style="color: #ff0000">再次证明了采用ISO-8859-1是不能保存中文的，而且会因为中文编码在ISO-8859-1的编码中找不到对应的字符而默认转换成?。</span></strong></span></p>
<p><span style="font-size: 18px">在英文平台下，如果使用FileWriter，不论你如何设置字符集同样都不会起作用。所有的文件都将按照ISO-8859-1的编码方式保存，毫无疑问地变成了?。在英文平台下，如果使用OutputStreamWriter，则只有当我们把字符和文件的编码方式正确设置为GBK、UTF-8的情况下，中文才能正确的保存并显示。</span></p>
<p><span style="font-size: 18px">通过上述的实验证明，<strong><span style="color: #ff0000">为了确保在不同的平台下，客户端输入的中文可以被正确地解析、保存、读取。最好的办法就是使用OutputStreamWriter配合UTF-8编码。</span></strong>如果不想使用UTF-8编码，那么可以考虑使用GB2312，不建议使用GBK、GB18030。因为对于某些老式的文本编辑器，甚至不支持GBK、GB18030的编码，但是对于GB2312则是一定支持的。因为前两者都不是国标但后者是。</span></p>
<p><span style="font-size: 18px">关于String的getBytes()，getBytes(encoding)和new String(bytes, encoding)这三个方法，非常值得注意：A.getBytes()：使用平台默认的编码方式(通过file.encoding属性获取)方式来将字符串转换成byte[]。得到的是字符串最原始的字节编码值。</span></p>
<p><span style="font-size: 18px">B.getBytes(NAME_OF_CHARSET)：<strong><span style="color: #ff0000">使用指定的编码方式将字符串转换成byte[]，如果想要得到正确的字节数组，程序员必须给出正确的NAME_OF_CHARSET</span></strong>。否则得到的就不会得到正确的结果。</span></p>
<p><span style="font-size: 18px">C.new String(bytes, encoding)：<strong><span style="color: #ff0000">如果我们在客户端使用UTF-8编码的JSP页面发出请求，浏览器编码后的UTF-8字节会以ISO-8859-1的形式传递到服务器端。所以要得到经HTTP协议传输的原始字节，我们需要先调用getBytes("ISO-8859-1")得到原始的字节，但由于我们客户端的原始编码是UTF-8，如果继续按照ISO-8859-1解码，那么得到的将不是一个中文字符，而是3个乱码的字符。所以我们需要再次调用new String(bytes,"UTF-8")，将字节数组按照UTF-8的格式，每3个一组进行解码，才能还原为客户端的原始字符。</span></strong></span></p>
<p><span style="font-size: 18px">D.String的getBytes()、getBytes(NAME_OF_CHARSET)方法都是比较微妙的方法，原则上：传输时采用的是什么编码，我们就需要按照这种编码得到字节。new String(bytes, NAME_OF_CHARSET)则更加需要小心，原则上：客户端采用的是什么编码，那么这里的NAME_OF_CHARSET就必须和客户端保持一致。<strong><span style="color: #3333ff">例如JSP页面是GBK，那么我们接收页面传递而来的参数时就必须使用new String(parameter.getBytes("ISO-8859-1"), "GBK")</span></strong>;如果使用了错误的解码方式，如使用了UTF-8，那么得到的很有可能就是乱码了。也就是说：GBK---&gt;ISO-8859-1---&gt;GBK、UTF-8---&gt;ISO-8859-1---&gt;UTF-8的转换过程是没有问题的。但是GBK---&gt;ISO-8859-1---&gt;UTF-8、UTF-8---&gt;ISO-8859-1---&gt;GBK的字节直接转码则可能导致乱码，需要另外的转换过程。</span></p>
<p><span style="font-size: 18px"><strong><span style="color: #ff0000">记住：</span></strong>谨慎地使用getBytes(NAME_OF_CHARSET)和new String(bytes, NAME_OF_CHARSET)，除非你很清楚的知道原始的字符编码和传输协议使用的编码。推荐使用基于服务器的配置、过滤器设置request/response的characterEncoding、content type属性。还有就是JSP页面的pageEncoding属性、HTML meta元素的content type属性。尽量避免频繁的在代码中进行字符串转码，即降低了效率又增加了风险。</span></p>
<p><span style="font-size: 18px">问题：我们在web应用开发过程中经常遇到输出某种编码的字符，如iso8859-1等，如何输出一个某种编码的字符串？</span></p><span style="font-size: 18px">代码如下：</span> 
<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/kiss_the_sun/article/details/7852724#"><u><font color="#0066cc">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/kiss_the_sun/article/details/7852724#"><u><font color="#0066cc">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/kiss_the_sun/article/details/7852724#"><u><font color="#0066cc">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/kiss_the_sun/article/details/7852724#"><u><font color="#0066cc">?</font></u></a></div></div>
<ol class="dp-j"><li class="alt"><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> StringTest { </span></li><li><span></span><span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args){ </span></span></li><li class="alt"><span>String str=</span><span class="string">"我是中国人"</span><span>; </span></span></li><li><span></span><span class="keyword">try</span><span> { </span></span></li><li class="alt"><span></span><span class="keyword">byte</span><span>[] by=str.getBytes(</span><span class="string">"ISO-8859-1"</span><span>); </span></span></li><li><span></span><span class="keyword">byte</span><span>[] by1=str.getBytes(</span><span class="string">"GBK"</span><span>); </span></span></li><li class="alt"><span></span><span class="keyword">byte</span><span>[] by2=str.getBytes(</span><span class="string">"utf-8"</span><span>); </span></span></li><li><span>System.out.println(</span><span class="string">"ISO-8859-1"</span><span>); </span></span></li><li class="alt"><span>System.out.println(by.length); </span></li><li><span>System.out.println(by[</span><span class="number">0</span><span>]); </span></span></li><li class="alt"><span></span></li><li><span>System.out.println(</span><span class="string">"GBK"</span><span>); </span></span></li><li class="alt"><span>System.out.println(by1.length); </span></li><li><span>System.out.println(by1[</span><span class="number">0</span><span>]); </span></span></li><li class="alt"><span></span></li><li><span>System.out.println(</span><span class="string">"utf-8"</span><span>); </span></span></li><li class="alt"><span>System.out.println(by2.length); </span></li><li><span>System.out.println(by2[</span><span class="number">0</span><span>]); </span></span></li><li class="alt"><span></span></li><li><span></span><span class="comment">//先将字符串以ISO-8859-1进行编码 </span><span></span></span></li><li class="alt"><span>String tempStr = </span><span class="keyword">new</span><span> String(str.getBytes(), </span><span class="string">"ISO-8859-1"</span><span>); </span></span></li><li><span></span><span class="comment">//由于中文平台一个中文占两上字节，所以以ISO-8859-1进行编码时，输出为10个字符的乱码 </span><span></span></span></li><li class="alt"><span>System.out.println(tempStr); </span></li><li><span></span><span class="comment">//再获取该字符串的ISO-8859-1字节，以GBK解码， </span><span></span></span></li><li class="alt"><span>tempStr=</span><span class="keyword">new</span><span> String(tempStr.getBytes(</span><span class="string">"ISO-8859-1"</span><span>),</span><span class="string">"GBK"</span><span>); </span></span></li><li><span></span><span class="comment">//还原 </span><span></span></span></li><li class="alt"><span>System.out.println(tempStr); </span></li><li><span>} </span></li><li class="alt"><span></span><span class="keyword">catch</span><span> (Exception e) { </span></span></li><li><span>System.err.println(e.getMessage()); </span></li><li class="alt"><span>} </span></li><li><span>} </span></li><li class="alt"><span>} </span></li></ol></div><br />输出： <pre style="padding-bottom: 0px; line-height: 22px; background-color: rgb(255,252,246); margin-top: 0px; padding-left: 0px; padding-right: 0px; zoom: 1; font-family: Arial; word-wrap: break-word; white-space: pre-wrap; margin-bottom: 10px; font-size: 14px; padding-top: 0px" id="best-answer-content" class="reply-text mb10" name="code">GBK
10
-50
utf-8
15
-26
???????&#250;??
我是中国人
</pre><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/388054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-09-19 11:33 <a href="http://www.blogjava.net/baizhihui19870626/articles/388054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>//转----java面试题及答案（基础题122道，代码题19道） </title><link>http://www.blogjava.net/baizhihui19870626/articles/388040.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 19 Sep 2012 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/388040.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/388040.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/388040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/388040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/388040.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JAVA相关基础知识1、面向对象的特征有哪些方面 1.抽象：抽象就是忽略一个主题中与当前目标无关的那些方面，以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题，而只是选择其中的一部分，暂时不用部分细节。抽象包括两个方面，一是过程抽象，二是数据抽象。2.继承：继承是一种联结类的层次模型，并且允许和鼓励类的重用，它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生，这个过程称...&nbsp;&nbsp;<a href='http://www.blogjava.net/baizhihui19870626/articles/388040.html'>阅读全文</a><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/388040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-09-19 09:46 <a href="http://www.blogjava.net/baizhihui19870626/articles/388040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中Vector、ArrayList、List使用深入剖析</title><link>http://www.blogjava.net/baizhihui19870626/articles/387692.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Fri, 14 Sep 2012 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/387692.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/387692.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/387692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/387692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/387692.html</trackback:ping><description><![CDATA[　线性表，链表，哈希表是常用的数据结构，在进行<a class="channel_keylink" href="http://java.chinaitlab.com/" target="_blank"><font color="#0000ff">Java</font></a>开发时，JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述，向读者阐述各个类的作用以及如何正确使用这些类。 
<p>　　Collection</p>
<p>　　&#9500;List</p>
<p>　　&#9474;&#9500;LinkedList</p>
<p>　　&#9474;&#9500;ArrayList</p>
<p>　　&#9474;&#9492;Vector</p>
<p>　　&#9474;　&#9492;Stack</p>
<p>　　&#9492;Set</p>
<p>　　Map</p>
<p>　　&#9500;Hashtable</p>
<p>　　&#9500;HashMap</p>
<p>　　&#9492;WeakHashMap</p>
<p>　　Collection接口</p>
<p>　　Collection是最基本的集合接口，一个Collection代表一组Object，即Collection的元素（Elements）。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。<a class="channel_keylink" href="http://java.chinaitlab.com/" target="_blank"><font color="#0000ff">Java</font></a> SDK不提供直接继承自Collection的类， Java SDK提供的类都是继承自Collection的&#8220;子接口&#8221;如List和Set。</p>
<p>　　所有实现Collection接口的类都必须提供两个标准的构造函数：无参数的构造函数用于创建一个空的Collection，有一个 Collection参数的构造函数用于创建一个新的 Collection，这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。</p>
<p>　　如何遍历Collection中的每一个元素？不论Collection的实际类型如何，它都支持一个iterator()的方法，该方法返回一个迭代子，使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下：</p>
<p>　　Iterator it = collection.iterator(); // 获得一个迭代子</p>
<p>　　while(it.hasNext()) {</p>
<p>　　Object obj = it.next(); // 得到下一个元素</p>
<p>　　}</p>
<p>　　由Collection接口派生的两个接口是List和Set。</p>
<p>　　List接口</p>
<p>　　List是有序的Collection，使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引（元素在List中的位置，类似于数组下标）来访问List中的元素，这类似于Java的数组。</p>
<p>　　和下面要提到的Set不同，List允许有相同的元素。</p>
<p>　　除了具有Collection接口必备的iterator()方法外，List还提供一个listIterator()方法，返回一个 ListIterator接口，和标准的Iterator接口相比，ListIterator多了一些add()之类的方法，允许添加，删除，设定元素，还能向前或向后遍历。</p>
<p>　　实现List接口的常用类有LinkedList，ArrayList，Vector和Stack。</p>
<p>　　LinkedList类</p>
<p>　　LinkedList实现了List接口，允许null元素。此外LinkedList提供额外的get，remove，insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈（stack），队列（queue）或双向队列（deque）。</p>
<p>　　注意LinkedList没有同步方法。如果多个线程同时访问一个List，则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List：</p>
<p>　　List list = Collections.synchronizedList(new LinkedList(...));</p>
<p>　　ArrayList类</p>
<p>　　ArrayList实现了可变大小的数组。它允许所有元素，包括null。ArrayList没有同步。</p>
<p>　　size，isEmpty，get，set方法运行时间为常数。但是add方法开销为分摊的常数，添加n个元素需要O(n)的时间。其他的方法运行时间为线性。</p>
<p>　　每个ArrayList实例都有一个容量（Capacity），即用于<a class="channel_keylink" href="http://www.storworld.com/" target="_blank"><font color="#0000ff">存储</font></a>元素的数组的大小。这个容量可随着不断添加新元素而自动增加，但是增长算法并没有定义。当需要插入大量元素时，在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。</p>
<p>　　和LinkedList一样，ArrayList也是非同步的（unsynchronized）。</p>
<p>　　Vector类</p>
<p>　　Vector非常类似ArrayList，但是Vector是同步的。由Vector创建的Iterator，虽然和ArrayList创建的 Iterator是同一接口，但是，因为Vector是同步的，当一个Iterator被创建而且正在被使用，另一个线程改变了Vector的状态（例如，添加或删除了一些元素），这时调用Iterator的方法时将抛出ConcurrentModificationException，因此必须捕获该异常。</p>
<p>　　Stack 类</p>
<p>　　Stack继承自Vector，实现一个后进先出的堆栈。Stack提供5个额外的方法使得 Vector得以被当作堆栈使用。基本的push和pop方法，还有peek方法得到栈顶的元素，empty方法<a class="channel_keylink" href="http://softtest.chinaitlab.com/" target="_blank"><font color="#0000ff">测试</font></a>堆栈是否为空，search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。</p>
<p>　　Set接口</p>
<p>　　Set是一种不包含重复的元素的Collection，即任意的两个元素e1和e2都有e1.equals(e2)=false，Set最多有一个null元素。</p>
<p>　　很明显，Set的构造函数有一个约束条件，传入的Collection参数不能包含重复的元素。</p>
<p>　　请注意：必须小心操作可变对象（Mutable Object）。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。</p><br />Map接口 
<p>　　请注意，Map没有继承Collection接口，Map提供key到value的映射。一个Map中不能包含相同的key，每个key只能映射一个 value。Map接口提供3种集合的视图，Map的内容可以被当作一组key集合，一组value集合，或者一组key-value映射。</p>
<p>　　Hashtable类</p>
<p>　　Hashtable继承Map接口，实现一个key-value映射的哈希表。任何非空（non-null）的对象都可作为key或者value。</p>
<p>　　添加数据使用put(key, value)，取出数据使用get(key)，这两个基本操作的时间开销为常数。</p>
<p>　　Hashtable 通过initial capacity和load factor两个参数调整性能。通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大，这会影响像get和put这样的操作。</p>
<p>　　使用Hashtable的简单示例如下，将1，2，3放到Hashtable中，他们的key分别是&#8221;one&#8221;，&#8221;two&#8221;，&#8221;three&#8221;：</p>
<p>　　Hashtable numbers = new Hashtable();</p>
<p>　　numbers.put(&#8220;one&#8221;, new Integer(1));</p>
<p>　　numbers.put(&#8220;two&#8221;, new Integer(2));</p>
<p>　　numbers.put(&#8220;three&#8221;, new Integer(3));</p>
<p>　　要取出一个数，比如2，用相应的key：</p>
<p>　　Integer n = (Integer)numbers.get(&#8220;two&#8221;);</p>
<p>　　System.out.println(&#8220;two = &#8221; + n);</p>
<p>　　由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置，因此任何作为key的对象都必须实现hashCode和equals方法。hashCode和equals方法继承自根类Object，如果你用自定义的类当作key的话，要相当小心，按照散列函数的定义，如果两个对象相同，即obj1.equals(obj2)=true，则它们的hashCode必须相同，但如果两个对象不同，则它们的hashCode不一定不同，如果两个不同对象的hashCode相同，这种现象称为冲突，冲突会导致操作哈希表的时间开销增大，所以尽量定义好的hashCode()方法，能加快哈希表的操作。</p>
<p>　　如果相同的对象有不同的hashCode，对哈希表的操作会出现意想不到的结果（期待的get方法返回null），要避免这种问题，只需要牢记一条：要同时复写equals方法和hashCode方法，而不要只写其中一个。</p>
<p>　　Hashtable是同步的。</p>
<p>　　HashMap类</p>
<p>　　HashMap和Hashtable类似，不同之处在于HashMap是非同步的，并且允许null，即null value和null key。，但是将HashMap视为Collection时（values()方法可返回Collection），其迭代子操作时间开销和HashMap 的容量成比例。因此，如果迭代操作的性能相当重要的话，不要将HashMap的初始化容量设得过高，或者load factor过低。</p>
<p>　　WeakHashMap类</p>
<p>　　WeakHashMap是一种改进的HashMap，它对key实行&#8220;弱引用&#8221;，如果一个key不再被外部所引用，那么该key可以被GC回收。</p>
<p>　　总结</p>
<p>　　如果涉及到堆栈，队列等操作，应该考虑用List，对于需要快速插入，删除元素，应该使用LinkedList，如果需要快速随机访问元素，应该使用ArrayList。</p>
<p>　　如果程序在单线程环境中，或者访问仅仅在一个线程中进行，考虑非同步的类，其效率较高，如果多个线程可能同时操作一个类，应该使用同步的类。</p>
<p>　　要特别注意对哈希表的操作，作为key的对象要正确复写equals和hashCode方法。</p>
<p>　　尽量返回接口而非实际的类型，如返回List而非ArrayList，这样如果以后需要将ArrayList换成LinkedList时，客户端代码不用改变。这就是针对抽象编程。</p>
<p>　　同步性</p>
<p>　　Vector 是同步的。这个类中的一些方法保证了Vector中的对象是线程<a class="channel_keylink" href="http://security.chinaitlab.com/" target="_blank"><font color="#0000ff">安全</font></a>的。而ArrayList则是异步的，因此ArrayList中的对象并不是线程<a class="channel_keylink" href="http://security.chinaitlab.com/" target="_blank"><font color="#0000ff">安全</font></a>的。因为同步的要求会影响执行的效率，所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择，这样可以避免由于同步带来的不必要的性能开销。</p>
<p>　　数据增长</p>
<p>　　从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控制集合中的对象。当你向这两种类型中增加元素的时候，如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度，Vector缺省情况下自动增长原来一倍的数组长度， ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用 Vector有一些优势，因为你可以通过设置集合的初始化大小来避免不必要的资源开销。</p>
<p>　　使用模式</p>
<p>　　在ArrayList和Vector中，从一个指定的位置（通过索引）查找数据或是在集合的末尾增加、移除一个元素所花费的时间是一样的，这个时间我们用 O(1)表示。但是，如果在集合的其他位置增加或移除元素那么花费的时间会呈线形增长：O(n-i)，其中n代表集合中元素的个数，i代表元素增加或移除元素的索引位置。为什么会这样呢？以为在进行上述操作的时候集合中第i和第i个元素之后的所有元素都要执行位移的操作。这一切意味着什么呢？</p>
<p>　　这意味着，你只是查找特定位置的元素或只在集合的末端增加、移除元素，那么使用Vector或ArrayList都可以。如果是其他操作，你最好选择其他的集合操作类。比如，LinkList集合类在增加或移除集合中任何位置的元素所花费的时间都是一样的?O(1)，但它在索引一个元素的使用缺比较慢－O (i),其中i是索引的位置.使用 ArrayList也很容易，因为你可以简单的使用索引来代替创建iterator对象的操作。LinkList也会为每个插入的元素创建对象，所有你要明白它也会带来额外的开销。</p>
<p>　　最后，在《Practical Java》一书中Peter Haggar建议使用一个简单的数组（Array）来代替Vector或ArrayList。尤其是对于执行效率要求高的程序更应如此。因为使用数组 (Array)避免了同步、额外的方法调用和不必要的重新分配空间的操作。</p>
<p>　　本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/cecoo/archive/2008/04/21/2311909.aspx">http://blog.csdn.net/cecoo/archive/2008/04/21/2311909.aspx</a></p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/387692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-09-14 09:22 <a href="http://www.blogjava.net/baizhihui19870626/articles/387692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cronExpression字段是定义job执行的时间 </title><link>http://www.blogjava.net/baizhihui19870626/articles/381613.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 27 Jun 2012 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/381613.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/381613.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/381613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/381613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/381613.html</trackback:ping><description><![CDATA[cronExpression字段是定义job执行的时间 <br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" href="http://zw-kindsoft-cn.iteye.com/blog/369718#"><img alt="复制代码" src="http://zw-kindsoft-cn.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://zw-kindsoft-cn.iteye.com/images/icon_star.png" /><img style="display: none" class="spinner" src="http://zw-kindsoft-cn.iteye.com/images/spinner.gif"  alt="" /></a></div></div>
<ol class="dp-j"><li><span># 字段 允许值 允许的特殊字符 </span></li><li><span># 秒 </span><span class="number"><font color="#c00000">0</font></span><span> - </span><span class="number"><font color="#c00000">59</font></span><span> , - * / </span></span></li><li><span># 分 </span><span class="number"><font color="#c00000">0</font></span><span> - </span><span class="number"><font color="#c00000">59</font></span><span> , - * / </span></span></li><li><span># 小时 </span><span class="number"><font color="#c00000">0</font></span><span> - </span><span class="number"><font color="#c00000">23</font></span><span> , - * / </span></span></li><li><span># 日期 </span><span class="number"><font color="#c00000">1</font></span><span> - </span><span class="number"><font color="#c00000">31</font></span><span> , - * ? / L W C </span></span></li><li><span># 月份 </span><span class="number"><font color="#c00000">1</font></span><span> - </span><span class="number"><font color="#c00000">12</font></span><span> 或者 JAN-DEC , - * / </span></span></li><li><span># 星期 </span><span class="number"><font color="#c00000">1</font></span><span> - </span><span class="number"><font color="#c00000">7</font></span><span> 或者 SUN-SAT , - * ? / L C # </span></span></li><li><span># 年（可选） 留空, </span><span class="number"><font color="#c00000">1970</font></span><span> - </span><span class="number"><font color="#c00000">2099</font></span><span> , - * / </span></span></li><li><span># 表达式意义 </span></li><li><span># </span><span class="string">"0 0 12 * * ?"</span><span> 每天中午 </span><span class="number"><font color="#c00000">12</font></span><span> 点触发 </span></span></li><li><span># </span><span class="string">"0 15 10 ? * *"</span><span> 每天上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 * * ?"</span><span> 每天上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 * * ? *"</span><span> 每天上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 * * ? 2005"</span><span> </span><span class="number"><font color="#c00000">2005</font></span><span> 年的每天上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 * 14 * * ?"</span><span> 在每天下午 </span><span class="number"><font color="#c00000">2</font></span><span> 点到下午 </span><span class="number"><font color="#c00000">2</font></span><span> : </span><span class="number"><font color="#c00000">59</font></span><span> 期间的每 </span><span class="number"><font color="#c00000">1</font></span><span> 分钟触发 </span></span></li><li><span># </span><span class="string">"0 0/5 14 * * ?"</span><span> 在每天下午 </span><span class="number"><font color="#c00000">2</font></span><span> 点到下午 </span><span class="number"><font color="#c00000">2</font></span><span> : </span><span class="number"><font color="#c00000">55</font></span><span> 期间的每 </span><span class="number"><font color="#c00000">5</font></span><span> 分钟触发 </span></span></li><li><span># </span><span class="string">"0 0/5 14,18 * * ?"</span><span> 在每天下午 </span><span class="number"><font color="#c00000">2</font></span><span> 点到 </span><span class="number"><font color="#c00000">2</font></span><span> : </span><span class="number"><font color="#c00000">55</font></span><span> 期间和下午 </span><span class="number"><font color="#c00000">6</font></span><span> 点到 </span><span class="number"><font color="#c00000">6</font></span><span> : </span><span class="number"><font color="#c00000">55</font></span><span> 期间的每 </span><span class="number"><font color="#c00000">5</font></span><span> 分钟触发 </span></span></li><li><span># </span><span class="string">"0 0-5 14 * * ?"</span><span> 在每天下午 </span><span class="number"><font color="#c00000">2</font></span><span> 点到下午 </span><span class="number"><font color="#c00000">2</font></span><span> : </span><span class="number"><font color="#c00000">05</font></span><span> 期间的每 </span><span class="number"><font color="#c00000">1</font></span><span> 分钟触发 </span></span></li><li><span># </span><span class="string">"0 10,44 14 ? 3 WED"</span><span> 每年三月的星期三的下午 </span><span class="number"><font color="#c00000">2</font></span><span> : </span><span class="number"><font color="#c00000">10</font></span><span> 和 </span><span class="number"><font color="#c00000">2</font></span><span> : </span><span class="number"><font color="#c00000">44</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 ? * MON-FRI"</span><span> 周一至周五的上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 15 * ?"</span><span> 每月 </span><span class="number"><font color="#c00000">15</font></span><span> 日上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 L * ?"</span><span> 每月最后一日的上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 ? * 6L"</span><span> 每月的最后一个星期五上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 ? * 6L 2002-2005"</span><span> </span><span class="number"><font color="#c00000">2002</font></span><span> 年至 </span><span class="number"><font color="#c00000">2005</font></span><span> 年的每月的最后一个星期五上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># </span><span class="string">"0 15 10 ? * 6#3"</span><span> 每月的第三个星期五上午 </span><span class="number"><font color="#c00000">10</font></span><span> : </span><span class="number"><font color="#c00000">15</font></span><span> 触发 </span></span></li><li><span># 每天早上</span><span class="number"><font color="#c00000">6</font></span><span> 点 </span></span></li><li><span># </span><span class="number"><font color="#c00000">0</font></span><span> </span><span class="number"><font color="#c00000">6</font></span><span> * * * </span></span></li><li><span># 每两个小时 </span></li><li><span># </span><span class="number"><font color="#c00000">0</font></span><span> */ </span><span class="number"><font color="#c00000">2</font></span><span> * * * </span></span></li><li><span># 晚上</span><span class="number"><font color="#c00000">11</font></span><span> 点到早上 </span><span class="number"><font color="#c00000">8</font></span><span> 点之间每两个小时，早上八点 </span></span></li><li><span># </span><span class="number"><font color="#c00000">0</font></span><span> </span><span class="number"><font color="#c00000">23</font></span><span> - </span><span class="number"><font color="#c00000">7</font></span><span> / </span><span class="number"><font color="#c00000">2</font></span><span> ， </span><span class="number"><font color="#c00000">8</font></span><span> * * * </span></span></li><li><span># 每个月的</span><span class="number"><font color="#c00000">4</font></span><span> 号和每个礼拜的礼拜一到礼拜三的早上 </span><span class="number"><font color="#c00000">11</font></span><span> 点 </span></span></li><li><span># </span><span class="number"><font color="#c00000">0</font></span><span> </span><span class="number"><font color="#c00000">11</font></span><span> </span><span class="number"><font color="#c00000">4</font></span><span> * </span><span class="number"><font color="#c00000">1</font></span><span> - </span><span class="number"><font color="#c00000">3</font></span><span> </span></span></li><li><span># </span><span class="number"><font color="#c00000">1</font></span><span> 月 </span><span class="number"><font color="#c00000">1</font></span><span> 日早上 </span><span class="number"><font color="#c00000">4</font></span><span> 点 </span></span></li><li><span># </span><span class="number"><font color="#c00000">0</font></span><span> </span><span class="number"><font color="#c00000">4</font></span><span> </span><span class="number"><font color="#c00000">1</font></span><span> </span><span class="number"><font color="#c00000">1</font></span><span> * </span></span></li></ol></div><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/381613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-06-27 15:49 <a href="http://www.blogjava.net/baizhihui19870626/articles/381613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java mail导入证书：</title><link>http://www.blogjava.net/baizhihui19870626/articles/381188.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 20 Jun 2012 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/381188.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/381188.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/381188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/381188.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/381188.html</trackback:ping><description><![CDATA[<p style="text-align: left; margin-bottom: 5.25pt; text-autospace: ; margin-left: 0cm; margin-right: 0cm; mso-margin-top-alt: 5.25pt" class="MsoNormal" align="left"><span style="font-family: 宋体; color: #1f497d">linux<br />1.java mail导入证书：<o:p></o:p></span></p>
<p style="text-align: left; margin-bottom: 5.25pt; text-autospace: ; margin-left: 0cm; margin-right: 0cm; mso-margin-top-alt: 5.25pt" class="MsoNormal" align="left"><span style="font-family: 宋体; color: #1f497d">cd jdk1.6.0_13\jre\lib\security<o:p></o:p></span></p>
<p style="text-align: left; margin-bottom: 5.25pt; text-autospace: ; margin-left: 0cm; margin-right: 0cm; mso-margin-top-alt: 5.25pt" class="MsoNormal" align="left"><span style="font-family: 宋体; color: #1f497d">keytool -import -alias cacerts -keystore cacerts -file </span><span style="font-family: 宋体; color: red">?$INSTALL/</span><span style="font-family: 宋体; color: red">exchange_certnew.cer </span><span style="font-family: 宋体; color: #1f497d">-trustcacerts<br />标红处为证书的全路径<br /><o:p></o:p></span></p>
<p style="text-align: left; margin-bottom: 5.25pt; text-autospace: ; margin-left: 0cm; margin-right: 0cm; mso-margin-top-alt: 5.25pt" class="MsoNormal" align="left"><span style="font-family: 宋体; color: #1f497d">此时命令行会提示你输入cacerts证书库密码<o:p></o:p></span></p>
<p style="text-align: left; margin-bottom: 5.25pt; text-autospace: ; margin-left: 0cm; margin-right: 0cm; mso-margin-top-alt: 5.25pt" class="MsoNormal" align="left"><span style="font-family: 宋体; color: #1f497d">java中cacerts证书库默认密码为changeit<o:p></o:p></span></p>
<p style="text-align: left; margin-bottom: 5.25pt; text-autospace: ; margin-left: 0cm; margin-right: 0cm; mso-margin-top-alt: 5.25pt" class="MsoNormal" align="left"><span style="font-family: 宋体; color: #1f497d">Y确认即可，OK，认证已添加至keystore<br /><br /><br /><br />windows<br /></p>
<p>第一步：</p>
<p>IE打开该网站，把要导入java证书库的证书下载在该网页安全警报弹出窗口上查看证书--详细信息--复制到文件会弹出一个证书导出向导对话框，按提示一直下一步直到完成。我把证书保存在C盘，test.cer</p>
<p>第二步：</p>
<p>进入C:\Program Files\Java\jre6\lib\security 目录下。注意观察Eclipse控制台他调用哪个jre，通常JDK中包含2个jre，一个是开发的，一个是JAVA使用的，Eclipse通常是jre6而不是jre1.6.0_02</p>
<p>然后调用命令：</p>
<p>keytool -import -alias cacerts -keystore cacerts -file C:\test.cer -trustcacerts</p>
<p style="text-align: left; margin-bottom: 5.25pt; text-autospace: ; margin-left: 0cm; margin-right: 0cm; mso-margin-top-alt: 5.25pt" class="MsoNormal" align="left">-alias后面是别名，可以随便写。 </p>
<p>此时命令行会提示你输入cacerts证书库密码 </p>
<p>java中cacerts证书库默认密码为changeit</p>
<p>Y确认即可，OK，认证已添加至keystore</p>
<p style="text-align: left; margin-bottom: 5.25pt; text-autospace: ; margin-left: 0cm; margin-right: 0cm; mso-margin-top-alt: 5.25pt" class="MsoNormal" align="left"><o:p></o:p></span></p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/381188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-06-20 17:01 <a href="http://www.blogjava.net/baizhihui19870626/articles/381188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取当前时间的总结 </title><link>http://www.blogjava.net/baizhihui19870626/articles/373790.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 11 Apr 2012 05:10:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/373790.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/373790.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/373790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/373790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/373790.html</trackback:ping><description><![CDATA[<pre style="display: none" class="java" title="获取当前时间的总结" pre_index="0" source_url="http://zhanghong813.iteye.com/blog/190971" codeable_type="Blog" codeable_id="190971" name="code">import   java.text.SimpleDateFormat;   
   
SimpleDateFormat   formatter   =   new   SimpleDateFormat   ("yyyy年MM月dd日   HH:mm:ss     ");   
 Date   curDate   =   new   Date(System.currentTimeMillis());//获取当前时间   
String   str   =   formatter.format(curDate);   
</pre>
<p>可以获取当前的年月时分,也可以分开写:</p><pre style="display: none" class="java" title="获取当前时间的总结" pre_index="1" source_url="http://zhanghong813.iteye.com/blog/190971" codeable_type="Blog" codeable_id="190971" name="code">SimpleDateFormat   sDateFormat   =   new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss");   
String   date   =   sDateFormat.format(new   java.util.Date());</pre>
<p>如果想获取当前的年月,则可以这样写(只获取时间或秒种一样):</p><pre style="display: none" class="java" title="获取当前时间的总结" pre_index="2" source_url="http://zhanghong813.iteye.com/blog/190971" codeable_type="Blog" codeable_id="190971" name="code">SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM");
String date=sdf.format(new java.util.Date());</pre>
<p>当然还有就是可以指定时区的时间(待):</p>
<p>df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,Locale.CHINA); <br />System.out.println(df.format(new Date()));</p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/373790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-04-11 13:10 <a href="http://www.blogjava.net/baizhihui19870626/articles/373790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA Map 的三种遍历方式</title><link>http://www.blogjava.net/baizhihui19870626/articles/373642.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Mon, 09 Apr 2012 08:20:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/373642.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/373642.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/373642.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/373642.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/373642.html</trackback:ping><description><![CDATA[<span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Collection;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.HashMap;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Iterator;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.List;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Map;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Set;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Map.Entry;<br /><br /><br /></span><span style="color: #008000">/**</span><span style="color: #008000"><br />* map遍历的三种办法<br />* </span><span style="color: #808080">@author</span><span style="color: #008000"> us<br />*<br /></span><span style="color: #008000">*/</span><span style="color: #000000"><br /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> test2<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args)<br />{ <br /></span><span style="color: #008000">/**</span><span style="color: #008000"><br />* new一个map，然后添加内容<br /></span><span style="color: #008000">*/</span><span style="color: #000000"><br />Map map</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap();<br /></span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000">&lt;</span><span style="color: #000000"> </span><span style="color: #000000">10</span><span style="color: #000000">; i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />{<br />map.put(i</span><span style="color: #000000">+</span><span style="color: #000000">""</span><span style="color: #000000">,i</span><span style="color: #000000">+</span><span style="color: #000000">""</span><span style="color: #000000">);<br />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">i</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">);<br />}<br />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">map大小</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">map.size());<br /><br /></span><span style="color: #008000">/**</span><span style="color: #008000"><br />* 1.把值放到一个集合力，然后便利集合<br /></span><span style="color: #008000">*/</span><span style="color: #000000"><br /></span><span style="color: #008000">//</span><span style="color: #008000"> Collection c=map.values();<br /></span><span style="color: #008000">//</span><span style="color: #008000"> Iterator it= c.iterator();<br /></span><span style="color: #008000">//</span><span style="color: #008000"> for (; it.hasNext();)<br /></span><span style="color: #008000">//</span><span style="color: #008000"> {<br /></span><span style="color: #008000">//</span><span style="color: #008000"> System.out.println(it.next());<br /></span><span style="color: #008000">//</span><span style="color: #008000"> }</span><span style="color: #008000"><br /></span><span style="color: #000000"><br /></span><span style="color: #008000">/**</span><span style="color: #008000"><br />* 2.把key放到一个集合里，遍历key值同时根据key得到值 (推荐)<br /></span><span style="color: #008000">*/</span><span style="color: #000000"><br /></span><span style="color: #008000">//</span><span style="color: #008000"> Set set =map.keySet();<br /></span><span style="color: #008000">//</span><span style="color: #008000"> Iterator it=set.iterator();<br /></span><span style="color: #008000">//</span><span style="color: #008000"> while(it.hasNext()){<br /></span><span style="color: #008000">//</span><span style="color: #008000"> String s= (String) it.next();<br /></span><span style="color: #008000">//</span><span style="color: #008000"> System.out.println(map.get(s));<br /></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"></span><span style="color: #008000">/**</span><span style="color: #008000"><br />* 3.把一个map对象放到放到entry里，然后根据entry同时得到key和值<br /></span><span style="color: #008000">*/</span><span style="color: #000000"><br />Set set </span><span style="color: #000000">=</span><span style="color: #000000">map.entrySet();<br />Iterator it</span><span style="color: #000000">=</span><span style="color: #000000">set.iterator();<br /></span><span style="color: #0000ff">while</span><span style="color: #000000">(it.hasNext()){<br />Map.Entry</span><span style="color: #000000">&lt;</span><span style="color: #000000">String, String</span><span style="color: #000000">&gt;</span><span style="color: #000000"> entry</span><span style="color: #000000">=</span><span style="color: #000000">(Entry</span><span style="color: #000000">&lt;</span><span style="color: #000000">String, String</span><span style="color: #000000">&gt;</span><span style="color: #000000">) it.next();<br />System.out.println(entry.getKey()</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">entry.getValue());<br /><br />}<br /><br />}<br />}</span><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/373642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-04-09 16:20 <a href="http://www.blogjava.net/baizhihui19870626/articles/373642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 读取csv文件，实例2</title><link>http://www.blogjava.net/baizhihui19870626/articles/373026.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Fri, 30 Mar 2012 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/373026.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/373026.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/373026.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/373026.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/373026.html</trackback:ping><description><![CDATA[<p>CSV文件简介<br />逗号分隔型取值格式（英文全称为Comma Separated Values，简称CSV），是一种纯文本格式，用来存储数据。在CSV中，数据的字段由逗号分开，程序通过读取文件重新创建正确的字段，方法是每次遇到逗号时开始新一段数据。</p>
<p>CSV文件是一个计算机数据文件用于执行审判和真正的组织工具，逗号分隔的清单。常常被用于移动表格数据之间的两个不同的计算机程序，例如关系数据库程序和电子表格程序。</p>
<p>本文以下面这个CSV文件为例，向大家简要介绍Java语言的CSV读写操作的一种实现方法。</p>
<p>writers.csv</p>
<p>张艺谋,1951,1114 <br />小沈阳,1981,0507 <br />孙红雷,1970,0816 <br />闫妮,1971,0310</p>
<p>CSV读取操作<br />CSV文件读取主要用到java.io.BufferedReader类和java.util.StringTokenizer类，BufferedReader用来读入文件，StringTokenizer用来将一行数据分成多个字段。</p>
<p>下面是用来读取CSV文件内容的类：</p>
<p>package tip;</p>
<p>import java.io.BufferedReader; <br />import java.io.File; <br />import java.io.FileNotFoundException; <br />import java.io.FileReader; <br />import java.io.IOException; <br />import java.util.StringTokenizer;</p>
<p>public class ReadCSV {</p>
<p>public static void main(String[] args) { <br />try { <br />File csv = new File("C:\\writers.csv"); // CSV文件</p>
<p>BufferedReader br = new BufferedReader(new FileReader(csv));</p>
<p>// 读取直到最后一行 <br />String line = ""; <br />while ((line = br.readLine()) != null) { <br />// 把一行数据分割成多个字段 <br />StringTokenizer st = new StringTokenizer(line, ",");</p>
<p>while (st.hasMoreTokens()) { <br />// 每一行的多个字段用TAB隔开表示 <br />System.out.print(st.nextToken() + "\t"); <br />} <br />System.out.println(); <br />} <br />br.close();</p>
<p>} catch (FileNotFoundException e) { <br />// 捕获File对象生成时的异常 <br />e.printStackTrace(); <br />} catch (IOException e) { <br />// 捕获BufferedReader对象关闭时的异常 <br />e.printStackTrace(); <br />} <br />} <br />}</p>
<p>执行结果如下所示：</p>
<p>CSV写操作<br />CSV文件读取主要用到java.io.BufferedWriter类。</p>
<p>下面是写CSV文件的类：</p>
<p>package tip;</p>
<p>import java.io.BufferedWriter; <br />import java.io.File; <br />import java.io.FileNotFoundException; <br />import java.io.FileWriter; <br />import java.io.IOException;</p>
<p>public class WriteCSV {</p>
<p>public static void main(String[] args) { <br />try { <br />File csv = new File("C:\\writers.csv"); // CSV文件 <br />// 追记模式 <br />BufferedWriter bw = new BufferedWriter(new FileWriter(csv, true)); <br />// 新增一行数据 <br />bw.newLine(); <br />bw.write("三枪拍案惊奇" + "," + "2009" + "," + "1212"); <br />bw.close(); <br />} catch (FileNotFoundException e) { <br />// 捕获File对象生成时的异常 <br />e.printStackTrace(); <br />} catch (IOException e) { <br />// 捕获BufferedWriter对象关闭时的异常 <br />e.printStackTrace(); <br />} <br />} <br />}</p>
<p>执行之后的writers.csv文件如下所示：</p>
<p>张艺谋,1951,1114 <br />小沈阳,1981,0507 <br />孙红雷,1970,0816 <br />闫妮,1971,0310 <br />三枪拍案惊奇,2009,1212</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/aerchi/archive/2010/03/10/5364056.aspx">http://blog.csdn.net/aerchi/archive/2010/03/10/5364056.aspx</a></p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/373026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-03-30 09:34 <a href="http://www.blogjava.net/baizhihui19870626/articles/373026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java读取某个文件夹下的所有文件</title><link>http://www.blogjava.net/baizhihui19870626/articles/372872.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Wed, 28 Mar 2012 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/372872.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/372872.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/372872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/372872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/372872.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: ˎ̥; mso-hansi-font-family: ˎ̥">还不错建议看下</span><span style="font-family: 'ˎ̥','serif'; mso-bidi-font-size: 10.5pt" lang="EN-US">.<o:p></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 'ˎ̥','serif'; mso-bidi-font-size: 10.5pt" lang="EN-US">import&nbsp;java.io.FileNotFoundException;<br />import&nbsp;java.io.IOException;<br />import&nbsp;java.io.File;<br /><br />public&nbsp;class&nbsp;ReadFile&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ReadFile()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: ˎ̥; mso-hansi-font-family: ˎ̥">读取某个文件夹下的所有文件</span><span style="font-family: 'ˎ̥','serif'; mso-bidi-font-size: 10.5pt" lang="EN-US"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;boolean&nbsp;readfile(String&nbsp;filepath)&nbsp;throws&nbsp;FileNotFoundException,&nbsp;IOException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{<br /><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;File&nbsp;file&nbsp;=&nbsp;new&nbsp;File(filepath);<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;if&nbsp;(!file.isDirectory())&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("</span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: ˎ̥; mso-hansi-font-family: ˎ̥">文件</span><span style="font-family: 'ˎ̥','serif'; mso-bidi-font-size: 10.5pt" lang="EN-US">");<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;System.out.println("path="&nbsp;+&nbsp;file.getPath());<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;System.out.println("absolutepath="&nbsp;+&nbsp;file.getAbsolutePath());<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;System.out.println("name="&nbsp;+&nbsp;file.getName());<br /><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;else&nbsp;if&nbsp;(file.isDirectory())&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("</span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: ˎ̥; mso-hansi-font-family: ˎ̥">文件夹</span><span style="font-family: 'ˎ̥','serif'; mso-bidi-font-size: 10.5pt" lang="EN-US">");<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;String[]&nbsp;filelist&nbsp;=&nbsp;file.list();<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;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;filelist.length;&nbsp;i++)&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;readfile&nbsp;=&nbsp;new&nbsp;File(filepath&nbsp;+&nbsp;"\\"&nbsp;+&nbsp;filelist[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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!readfile.isDirectory())&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("path="&nbsp;+&nbsp;readfile.getPath());<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("absolutepath="<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;&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;readfile.getAbsolutePath());<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("name="&nbsp;+&nbsp;readfile.getName());<br /><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(readfile.isDirectory())&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readfile(filepath&nbsp;+&nbsp;"\\"&nbsp;+&nbsp;filelist[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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><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;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(FileNotFoundException&nbsp;e)&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;System.out.println("readfile()&nbsp;&nbsp;&nbsp;Exception:"&nbsp;+&nbsp;e.getMessage());<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;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: ˎ̥; mso-hansi-font-family: ˎ̥">删除某个文件夹下的所有文件夹和文件</span><span style="font-family: 'ˎ̥','serif'; mso-bidi-font-size: 10.5pt" lang="EN-US"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*public&nbsp;static&nbsp;boolean&nbsp;deletefile(String&nbsp;delpath)<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;throws&nbsp;FileNotFoundException,&nbsp;IOException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{<br /><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;File&nbsp;file&nbsp;=&nbsp;new&nbsp;File(delpath);<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;if&nbsp;(!file.isDirectory())&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("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;file.delete();<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;else&nbsp;if&nbsp;(file.isDirectory())&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("2");<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;String[]&nbsp;filelist&nbsp;=&nbsp;file.list();<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;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;filelist.length;&nbsp;i++)&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;delfile&nbsp;=&nbsp;new&nbsp;File(delpath&nbsp;+&nbsp;"\\"&nbsp;+&nbsp;filelist[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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!delfile.isDirectory())&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("path="&nbsp;+&nbsp;delfile.getPath());<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("absolutepath="<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;&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;delfile.getAbsolutePath());<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("name="&nbsp;+&nbsp;delfile.getName());<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delfile.delete();<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("</span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: ˎ̥; mso-hansi-font-family: ˎ̥">删除文件成功</span><span style="font-family: 'ˎ̥','serif'; mso-bidi-font-size: 10.5pt" lang="EN-US">");<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(delfile.isDirectory())&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deletefile(delpath&nbsp;+&nbsp;"\\"&nbsp;+&nbsp;filelist[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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.delete();<br /><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;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(FileNotFoundException&nbsp;e)&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;System.out.println("deletefile()&nbsp;&nbsp;&nbsp;Exception:"&nbsp;+&nbsp;e.getMessage());<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;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&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;readfile("e:/videos");<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;deletefile("D:/file");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(FileNotFoundException&nbsp;ex)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(IOException&nbsp;ex)&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;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("ok");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</span></p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/372872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-03-28 09:53 <a href="http://www.blogjava.net/baizhihui19870626/articles/372872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决“软件包 javax.servlet 不存在”错误的方法 </title><link>http://www.blogjava.net/baizhihui19870626/articles/372684.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Mon, 26 Mar 2012 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/372684.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/372684.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/372684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/372684.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/372684.html</trackback:ping><description><![CDATA[<p style="margin: 0in; font-family: SimSun; font-size: 10pt"><span style="font-family: Arial">编译：javac Servlet.java 出现</span></p>
<p><span style="font-family: Arial">软件包 javax.servlet 不存在</span></p>
<p style="margin: 0in; font-family: SimSun; font-size: 10pt"><span style="font-family: Arial">软件包javax.servlet.http 不存在 等错误</span></p>
<p>&nbsp;</p>
<p><span style="font-family: Arial">由于servlet和JSP不是Java平台JavaSE（标准版）的一部分，而是Java EE（企业版）的一部分，因此，必须告知编译器servlet的位置。</span></p>
<p><span style="font-family: Arial">解决&#8220;软件包 javax.servlet不存在&#8221;错误的方法：</span></p>
<p><span style="font-family: Arial">1. 搜索servlet-api.jar</span></p>
<p><span style="font-family: Arial">所在文件夹：C:\Tomcat5.5\common\lib</span></p>
<p><span style="font-family: Arial">2. 将环境变量CLASSPATH的值设置为：</span></p>
<p><span style="font-family: Arial">.;C:\Tomcat5.5\common\lib\servlet-api.jar</span></p>
<p><span style="font-family: Arial"></span></p>
<p>3<span style="font-family: Arial">. </span>除了设置classpath以及servlet-api.jar外，还有一点！！！</p>
<p>把COMMON/LIB下的SERVLET-API.JAR 拷贝到JDK/jre\lib\ext下</p><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/372684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-03-26 10:27 <a href="http://www.blogjava.net/baizhihui19870626/articles/372684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java打包 jar </title><link>http://www.blogjava.net/baizhihui19870626/articles/372527.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Fri, 23 Mar 2012 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/372527.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/372527.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/372527.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/372527.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/372527.html</trackback:ping><description><![CDATA[<div id="blog_content" class="blog_content">java打包 jar <br />关键字: java jar <br />发布Java应用程序时你会感到困难？好在Java提供了一系列打包和发布工具，可以显著的简化发布过程该文章提供了打包Java code的几种方法，我们将会探讨Java manifest 文件，给出用于管理JAR文件所依赖文件、估计跨平台发布所需的CLasspath的合适方法.我也会解释如何使用manifest包版本特性来确认包的兼容性... <br />什么是JAR文件？ <br />在开发过程中，我们可以直接使用Java class文件来运行程序，但这并不是一个好方式，好在Java 提供了 JAR(Java Archive)文件来提供发布和运行。 <br />jar 文件实际上是class 文件的ZIP压缩存档，这种格式被广泛使用，因此易与使用，有很多中工具可以操作这种格式的文件。也正是因为这个原因，jar文件本身并不能表达所包含应用程序的标签信息。 <br />Manifest 因此得以出现 <br />为了要提供存档的标签信息，jar 文件指定了一个特定目录来存放标签信息：META-INF 目录，其中我们来关注该目录中的MANIFEST.MF文件，他就是JAR的manifest文件，他包含了JAR文件的内容描述，并在运行时向JVM提供应用程序的信息，大多数JAR文件含有一个默认生成的manifest 文件,执行JAR命令或使用zip工具，都可以产生它 <br />如果是由jar命令产生的 manifest 文件，形如: <br />Manifest-Version: 1.0 <br />Created-By:1.4.0-beta <br />(Sun Microsystems Inc.) <br />这些信息没甚么用,仅仅告诉我们使用的是1.0的manifest文件,第一行定义manifest的格式，第二行说明使用 SUN 的JDK1.4的jar工具生成该文件，如果manifest文件是由其他 （如ant） 创建的，那将会出现 &#8220;Created-By: Ant 1.2&#8221; 之类的内容，如果你是自己创建manifest文件，你可以加入自己的一些相关信息. <br />基础格式 <br />manifest 文件的格式 是很简单的，每一行都是 名－值 对应的:属性名开头，接着是 ":" ，然后是属性值，每行最多72个字符，如果需要增加，你可以在下一行续行，续行以空格开头，以空格开头的行都会被视为前一行的续行。 <br />所有在开头的属性都是全局的，你也可以定义特定class 或package的属性，稍后将介绍这种 <br />把manifest文件插入JAR文件 <br />使用 m 选项，把指定文件名的manifest文件 传入，例如 <br />jar cvfm myapplication.jar myapplication.mf [-C]classdir <br />如果你使用ant来创建时，在ant 的build.xml 加入如下条目 <br />&lt;target name="jar"&gt; <br />&lt;jar jarfile ="myapplication.jar" <br />manifest="myapplication.mf"&gt; <br />&lt;fileset dir="classdir" <br />includes="**/*.class"/&gt; <br />&lt;/jar&gt; <br />&lt;/target&gt; <br />运行Java程序 <br />现在我们来体验一下manifest文件的作用，如果现在我们有一个Java 应用程序打包在myapplication.jar中， main class为 com.example.myapp.MyAppMain ，那么我们可以用以下的命令来运行 <br />java -classpath myapplication.jar com.example.myapp.MyAppMain <br />这显然太麻烦了，现在我们来创建自己的manifest文件，如下： <br />Manifest-Version: 1.0 <br />Created-By: JDJ example <br />Main-Class: com.example.myapp.MyAppMain <br />这样我们就可以使用如下的命令来运行程序了：（明显简单多了，也不会造成无谓的拼写错误） <br />java -jar myapplication.jar <br />管理JAR的依赖资源 <br />很少Java应用会仅仅只有一个jar文件，一般还需要 其他类库。比如我的应用程序用到了Sun 的 Javamail classes ，在classpath中我需要包含activation.jar 和 mail.jar,这样在运行程序时,相比上面的例子,我们要增加一些: <br />java -classpath mail.jar:activation.jar -jar myapplication.jar <br />在不同的操作系统中,jar包间的分隔符也不一样，在UNIX用&#8220;：&#8221;，在window中使用 &#8220;；&#8221;，这样也不方便 <br />同样，我们改写我们的manifest文件，如下 <br />Manifest-Version: 1.0 <br />Created-By: JDJ example <br />Main-Class: com.example.myapp.MyAppMain <br />Class-Path: mail.jar activation.jar <br />（加入了Class-Path: mail.jar activation.jar，用空格分隔两个jar包） <br />这样我们仍然可以使用和上例中相同的命令来执行该程序： <br />java -jar myapplication.jar <br />Class-Path属性中包含了用空格分隔的jar文件，在这些jar文件名中要对特定的字符使用逃逸符，比如空格，要表示成"%20"，在路径的表示中，都采用&#8220;/&#8221;来分隔目录，无论是在什么操作系统中，(即使在window中)，而且这里用的是相对路径（相对于本身的JAR文件）： <br />Manifest-Version: 1.0 <br />Created-By: JDJ example <br />Main-Class: com.example.myapp.MyAppMain <br />Class-Path: ext/mail.jar ext/activation.jar <br />Multiple Main Classes（多主类） <br />还有一种Multiple Main Classes情况，如果你的应用程序可能有命令行版本 和GUI版本，或者一些不同的应用却共享很多相同的代码，这时你可能有多个Main Class，我们建议你采取这样的策略：把共享的类打成lib包，然后把不同的应用打成不同的包，分别标志主类：如下 <br />Manifest for myapplicationlib.jar: <br />Manifest-Version: 1.0 <br />Created-By: JDJ example <br />Class-Path: mail.jar activation.jar <br />Manifest for myappconsole.jar: <br />Manifest-Version: 1.0 <br />Created-By: JDJ example <br />Class-Path: myapplicationlib.jar <br />Main-Class: com.example.myapp.MyAppMain <br />Manifest for myappadmin.jar: <br />Manifest-Version: 1.0 <br />Created-By: JDJ example <br />Class-Path: myapplicationlib.jar <br />Main-Class: com.example.myapp.MyAdminTool <br />在myappconsole.jar 和 myappadmin.jar的manifest文件中分别注明各自的 Main Class <br />Package Versioning <br />完成发布后，如果使用者想了解 ，哪些代码是谁的？目前是什么版本？使用什么版本的类库？解决的方法很多 ，manifest提供了一个较好的方法，你可以在manifest文件中描述每一个包的信息。 <br />Java 秉承了实现说明与描述分离的原则，package 的描述 定义了package 是什么，实现说明 定义了谁提供了描述的实现，描述和实现包含 名、版本号和提供者。要得到这些信息，可以查看JVM的系统属性（使用 java.lang.System.getProperty() ） <br />在manifest文件中，我可以为每个package定义描述和实现版本，声明名字，并加入描述属性和实现属性，这些属性是 <br />Specification-Title <br />Specification-Version <br />Specification-Vendor <br />Implementation-Title <br />Implementation-Version <br />Implementation-Vendor <br />当要提供一个类库或编程接口时，描述信息显得是很重要，见以下范例： <br />Manifest-Version: 1.0 <br />Created-By: JDJ example <br />Class-Path: mail.jar activation.jar <br />Name: com/example/myapp/ <br />Specification-Title: MyApp <br />Specification-Version: 2.4 <br />Specification-Vendor: example.com <br />Implementation-Title: com.example.myapp <br />Implementation-Version: 2002-03-05-A <br />Implementation-Vendor: example.com <br />Package Version 查询 <br />在manifest文件中加入package描述后，就可以使用Java提供的java.lang.Package class进行Package 的信息查询，这里列举3个最基本的获取package object的方法 <br />1.Package.getPackages():返回系统中所有定义的package列表 <br />2.Package.getPackage(String packagename):按名返回package <br />3.Class.getPackage():返回给定class所在的package <br />使用者这方法就可以动态的获取package信息. <br />需要注意的是如果给定的package中没有class被加载,则也无法获得package 对象 <br />Manifest 技巧 <br />总是以Manifest-Version属性开头 <br />每行最长72个字符，如果超过的化，采用续行 <br />确认每行都以回车结束，否则改行将会被忽略 <br />如果Class-Path 中的存在路径，使用"/"分隔目录，与平台无关 <br />使用空行分隔主属性和package属性 <br />使用"/"而不是"."来分隔package 和class ,比如 com/example/myapp/ <br />class 要以.class结尾，package 要以 / 结尾 <br /></div><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/372527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-03-23 11:21 <a href="http://www.blogjava.net/baizhihui19870626/articles/372527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>介绍一下eclipse这个软件</title><link>http://www.blogjava.net/baizhihui19870626/articles/371899.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Thu, 15 Mar 2012 01:01:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/371899.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/371899.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/371899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/371899.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/371899.html</trackback:ping><description><![CDATA[Eclipse是著名的跨平台的自由集成开发环境（IDE）。最初主要用来Java语言开发，但是目前亦有人通过插件使其作为C++、Python、PHP等其他语言的开发工具。<br />Eclipse的本身只是一个框架平台，但是众多插件的支持，使得Eclipse拥有较佳的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。<br /><br />历史<br /><br />Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境，2001年11月贡献给开源社区，现在它由非营利软件供应商联盟Eclipse基金会（Eclipse Foundation）管理。 2003年，Eclipse 3.0选择OSGi服务平台规范为运行时架构。 2007年6月，稳定版3.3发布；2008年6月发布代号为Ganymede的3.4版；2009年6月发布代号为Galileo的3.5版；2010年6月发布代号为Helios的3.6版<br />架构<br /><br />Eclipse的基础是富客户机平台（Rich Client Platform，即RCP）。RCP包括下列组件：<br />核心平台（启动Eclipse，运行插件）<br />OSGi（标准集束框架）<br />SWT（可移植构件工具包）<br />JFace（文件缓冲，文本处理，文本编辑器）<br />Eclipse工作台（即Workbench ，包含视图（views）、编辑器（editors）、视角（perspectives）、和向导（wizards））<br />Eclipse采用的技术是IBM公司开发的（SWT），这是一种基于Java的窗口组件，类似Java本身提供的AWT和Swing窗口组件；不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace，从而简化了基于SWT的应用程序的构建。<br />Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上，Eclipse使用插件来提供所有的附加功能，例如支持Java以外的其他语言。 已有的分离的插件已经能够支持C/C++（CDT）、PHP、Perl、Ruby，Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到现有环境中，例如配置管理，而决不仅仅限于支持各种编程语言。<br />Eclipse的设计思想是：一切皆插件。Eclipse核心很小，其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括：图形API (SWT/Jface)， Java开发环境插件（JDT），插件开发环境（PDE）等。<br /><br />Eclipse计划<br /><br />Eclipse由各种不同的计划组成。以下列出了部分计划，更完整全面的列表在此（英文）。<br />Eclipse计划：本身包括Eclipse平台，Eclipse富客户端平台（RCP）和Java开发工具（JDT）。<br />Eclipse测试和性能工具平台（TPTP）：提供一个允许软件开发者构建诸如测试调试、概况分析、基准评测等测试和性能工具的平台。<br />Eclipse Web工具平台计划（WTP）：用Java企业版Web应用程序开发工具来扩展Eclipse平台。它由以下部分组成：HTML、JavaScript、CSS、JSP、SQL、XML、DTD、XSD和WSDL的源代码编辑器；XSD和WSDL的图形界面编辑器；Java企业版的&#8220;项目性质&#8221;（project nature）、建构器（builder）和模型（model），与一个Java企业版的导航（navigator）；一个Web服务（Web service）向导和浏览器，还有一个WS-I测试工具；最后是数据库访问查询的工具与模型。<br />Eclipse商业智能和报表工具计划（BIRT）：提供Web应用程序（特别是基于Java企业版的）的报表开发工具。<br />Eclipse可视化界面编辑器计划（VEP）：一个Eclipse下创建图形用户界面代码生成器的框架。<br />Eclipse建模框架（EMF）：依据使用XMI描述的建模规格，生成结构化数据模型的工具和其他应用程序的代码。<br />图形化编辑器框架（GEF）：能让开发者采用一个现成的应用程序模型来轻松地创建富图形化编辑器。<br />UML2：Eclipse平台下的一个UML 2.0元模型的实现，用以支持建模工具的开发。<br />AspectJ：一种针对Java的面向侧面语言扩展。<br />Eclipse通讯框架（ECF）：专注于在Eclipse平台上创建通讯应用程序的工作。<br />Eclipse数据工具平台计划（DTP）<br />Eclipse设备驱动软件开发计划（DSDP）<br />C/C++开发工具计划（CDT）：努力为Eclipse平台提供一个全功能C和C++的集成开发环境（IDE），它使用GCC作为编译器。<br />PHP开发工具计划（PDT）：努力为Eclipse平台提供一个全功能PHP的集成开发环境（IDE）。<br />Eclipse平台COBOL集成开发环境子计划（COBOL）：将构建一个Eclipse平台上的全功能COBOL集成开发环境。<br />并行工具平台（PTP）：将开发一个对并行计算机架构下的一组工具进行集成的平行工具平台，而且这个平台是可移植的，可伸缩的并基于标准的。<br />嵌入式富客户端平台（eRCP）：计划将Eclipse富客户端平台扩展到嵌入式设备上。这个平台主要是一个富客户端平台（RCP）组件子集的集合。它能让桌面环境下的应用程序模型能够大致同样地能运用在嵌入式设备上。<br /><br /><span style="color: red">发行版本</span><br /><br /><span style="color: red">版本代号 发行日期 平台版本 计划名称</span><br /><span style="color: red">Callisto（卡利斯托） 2006年6月30日 3.2 Callisto projects</span><br /><span style="color: red">Europa（欧罗巴） 2007年6月29日 3.3 Europa projects</span><br /><span style="color: red">Ganymede（伽倪墨得斯） 2008年6月25日 3.4 Ganymede projects</span><br /><span style="color: red">Galileo（伽利略） 2009年6月24日 3.5 Galileo projects</span><br /><span style="color: red">Helios（赫利俄斯） 2010年6月23日 3.6 Helios Projects</span><br /><span style="color: red">Indigo（靛青） 2011年6月 3.7 Indigo Projects</span> <img src ="http://www.blogjava.net/baizhihui19870626/aggbug/371899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-03-15 09:01 <a href="http://www.blogjava.net/baizhihui19870626/articles/371899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转-熔岩)Java 反射机制---学习中。。。</title><link>http://www.blogjava.net/baizhihui19870626/articles/371816.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Tue, 13 Mar 2012 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/371816.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/371816.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/371816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/371816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/371816.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/baizhihui19870626/articles/371816.html'>阅读全文</a><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/371816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-03-13 17:46 <a href="http://www.blogjava.net/baizhihui19870626/articles/371816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在MyEclipse中直接查看class文件（在没有源码的情况下） </title><link>http://www.blogjava.net/baizhihui19870626/articles/371795.html</link><dc:creator>小白19870626</dc:creator><author>小白19870626</author><pubDate>Tue, 13 Mar 2012 04:54:00 GMT</pubDate><guid>http://www.blogjava.net/baizhihui19870626/articles/371795.html</guid><wfw:comment>http://www.blogjava.net/baizhihui19870626/comments/371795.html</wfw:comment><comments>http://www.blogjava.net/baizhihui19870626/articles/371795.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baizhihui19870626/comments/commentRss/371795.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baizhihui19870626/services/trackbacks/371795.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在MyEclipse中直接查看class文件（在没有源码的情况下） &nbsp;&nbsp;<a href='http://www.blogjava.net/baizhihui19870626/articles/371795.html'>阅读全文</a><img src ="http://www.blogjava.net/baizhihui19870626/aggbug/371795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baizhihui19870626/" target="_blank">小白19870626</a> 2012-03-13 12:54 <a href="http://www.blogjava.net/baizhihui19870626/articles/371795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>