<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>xinlingwuyu</title>
    <description></description>
    <link>http://xinlingwuyu.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>window.dialogArguments的使用</title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/219435" style="color:red;">http://xinlingwuyu.javaeye.com/blog/219435</a>&nbsp;
          发表时间: 2008年07月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre class="clsCode">&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;showModelessDialogEX.htm&lt;/TITLE&gt;
&lt;SCRIPT&gt;
var sUserName="";
<span style="color: #0000ff;">
</span>function fnCallDialog(){
 <strong>showModelessDialog</strong>("myDialog.htm",<span class="hilite1"><span style="background-color: #ffff00;">window</span></span>,"status:false;dialogWidth:300px;dialogHeight:300px");
}
<span style="color: #0000ff;">
</span>function fnUpdate(){
    oName.innerText = sUserName;
}
&lt;/SCRIPT&gt;
&lt;/HEAD&gt;&lt;BODY&gt;
&lt;P&gt;Enter your first name:
 &lt;SPAN ID="oName" STYLE="color:red;font-size:24"&gt;Joan&lt;/SPAN&gt;&lt;/P&gt;
 &lt;INPUT TYPE="button" 
VALUE="Display Modeless Dialog" onclick="fnCallDialog()"&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</pre>
<p>Here is the code for "myDialog.htm".<br />&lt;HTML&gt; <br />&lt;HEAD&gt;<br />&lt;TITLE&gt;myDialog.htm&lt;/TITLE&gt;<br />&lt;SCRIPT&gt; <br />function fnGetInfo() { <br />var sData = <span class="hilite2"><span style="background-color: #55ff55;">dialogArguments</span></span>; <br />sData.sUserName = oEnterName.value; <br />sData.fnUpdate(); <br />}<br />function fnCancel() { <br />var sData = <span class="hilite2"><span style="background-color: #55ff55;">dialogArguments</span></span>; <br />sData.sUserName = "Joan"; <br />sData.fnUpdate(); <br />}<br />&lt;/SCRIPT&gt;<br />&lt;/HEAD&gt; <br />&lt;BODY&gt;<br />&lt;LABEL FOR="oEnterName" ACCESSKEY="f"&gt;<br />Enter your &lt;SPAN STYLE="text-decoration:underline"&gt;F&lt;/SPAN&gt;irst Name&lt;/LABEL&gt;<br />&lt;INPUT ID=oEnterName&gt;&lt;BR&gt;&lt;BR&gt;<br />&lt;INPUT VALUE="Apply" TYPE=button onclick="fnGetInfo();"&gt; <br />&lt;INPUT VALUE="Ok" TYPE=button onclick="fnGetInfo();<span class="hilite1"><span style="background-color: #ffff00;">window</span></span>.close();"&gt; <br />&lt;INPUT VALUE="Cancel" TYPE=button onclick="fnCancel();<span class="hilite1"><span style="background-color: #ffff00;">window</span></span>.close();"&gt; <br />&lt;/BODY&gt; <br />&lt;/HTML&gt;</p>
          <br/>
          <span style="color:red;">
            <a href="http://xinlingwuyu.javaeye.com/blog/219435#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 25 Jul 2008 12:27:12 +0800</pubDate>
        <link>http://xinlingwuyu.javaeye.com/blog/219435</link>
        <guid>http://xinlingwuyu.javaeye.com/blog/219435</guid>
      </item>
      <item>
        <title>利用Word打印报表</title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/215920" style="color:red;">http://xinlingwuyu.javaeye.com/blog/215920</a>&nbsp;
          发表时间: 2008年07月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>利用Word打印报表</p>
          <br/>
          <span style="color:red;">
            <a href="http://xinlingwuyu.javaeye.com/blog/215920#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Jul 2008 18:20:37 +0800</pubDate>
        <link>http://xinlingwuyu.javaeye.com/blog/215920</link>
        <guid>http://xinlingwuyu.javaeye.com/blog/215920</guid>
      </item>
      <item>
        <title>ActionScript3[1].0_Cookbook.rar</title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/214255" style="color:red;">http://xinlingwuyu.javaeye.com/blog/214255</a>&nbsp;
          发表时间: 2008年07月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>ActionScript3[1].0_Cookbook.rar</p>
          <br/>
          <span style="color:red;">
            <a href="http://xinlingwuyu.javaeye.com/blog/214255#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 12 Jul 2008 20:34:49 +0800</pubDate>
        <link>http://xinlingwuyu.javaeye.com/blog/214255</link>
        <guid>http://xinlingwuyu.javaeye.com/blog/214255</guid>
      </item>
      <item>
        <title>jbpm3.1中文文档 .chm</title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/213351" style="color:red;">http://xinlingwuyu.javaeye.com/blog/213351</a>&nbsp;
          发表时间: 2008年07月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>jbpm3.1中文文档 .chm</p>
          <br/>
          <span style="color:red;">
            <a href="http://xinlingwuyu.javaeye.com/blog/213351#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Jul 2008 10:23:02 +0800</pubDate>
        <link>http://xinlingwuyu.javaeye.com/blog/213351</link>
        <guid>http://xinlingwuyu.javaeye.com/blog/213351</guid>
      </item>
      <item>
        <title>成就DBA职业生涯（转）</title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/211158" style="color:red;">http://xinlingwuyu.javaeye.com/blog/211158</a>&nbsp;
          发表时间: 2008年07月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h3><a href="http://xinlingwuyu.javaeye.com/blog/210742"><span style="color: #108ac6;">成就DBA职业生涯（转）</span></a></h3>
<p><strong>关键字: dba</strong></p>
<div class="blog_content">
<p><br /><span style="color: #ff0000;">介绍</span><br /><br />许多年来，我在不同的新闻组上花费了很多时间与那些想知道如何得到数据库管理员（DBA）的工作或者如何成长为一名DBA的IT人进行交谈，现在他们有了工作。这些年来许多人针对如何达到这个目标提出了不同意见。本文即是那些意见的综合并且能够在如何才能出色的完成DBA的工作方面给出好的建议。这篇文章同样对于如何让一名DBA变得对老板更有价值。假如你已经是一名DBA，那么也许你会希望跳过文章的前几段。<br /><br /><span style="color: #ff0000;">我应该成为一名DBA么？</span><br /><br />我曾问过的一个问题是一个人应该从事DBA这样的职业么。这个问题并不容易回答，因为它因人而异。有的人有成为一名好DBA所需要的天赋。而其他人并不认为能够很容易掌握成为DBA的秘诀。DBA职业需要掌握一定的技能。而且还需要其他IT职业所不必需的要求。因此，为了回答这个问题，我通常给将要成为DBA的人描述DBA职业所必需的要求。下面的段落中，我都将以问题结尾。在继续下一段以前请花一些时间考虑并且回答这些问题。<br /><br />许多人因为许多原因而立志要成为DBA。其中一个主要原因是薪水。DBA是IT业中薪水最高的职业之一。其他人想成为DBA是因为喜欢赞扬DBA是受到的荣誉，或者因为他看上去很酷！我个人认为，成为DBA是很值得的。它是一个很有意思，令人兴奋的职业。那么，你把DBA作为一个可能的职业选择的原因是什么呢？<br /><br />除非你已经提前准备好了，否则你可能会发现从事DBA职业充满了挫折和令人头痛。一个数据库存在于操作系统和最终用户应用程序之间。同样地，DBA必须非常精通他的数据库所在的操作系统。DBA并不一定需要知道所有有关操作系统的知识，但是他知道得越多越好。数据库与操作系统联系非常紧密。理解这种关联是十分必要的。DBA还需要知道服务器硬件以及它如何影响与帮助数据库。同时，DBA必须理解应用软件。DBA可能会被要求帮助开发人员创建可靠，健全的数据库应用程序。还有，最重要的也是最明显的，DBA必须十分彻底的理解数据库引擎，它是如何工作的，所有的引擎是如何组合在一起的，以及如何影响数据库引擎向最终用户和应用程序传送数据的能力。我见过的最好的DBA有非常深刻的理解而且不仅仅在数据库本身。他们知道一些系统管理与应用开发。好多时候他们在成为DBA之前有其中一个或两个背景。无论如何，成为一名合格的而不是出色的DBA也需要许多背景知识。你是否已经做好准备开始学习直到你感到已经无法再学下去了？<br /><br />许多和我交谈过的，在开始DBA职业时遇到困难的人，在尝试着吸收大量DBA所需了解的信息时实际上都会有一些问题。毕竟系统管理员是全职学习操作系统的细节。应用程序开发人员全职学习如何编写好的程序。DBA不仅要非常了解这两种不同的工作，而且还需要花费更多的时间去理解数据库的体系结构，以及理解每一样东西的每一块是如何组合在一起的！听起来是不是很让人畏缩？有许多人失败后这样想，并且把DBA工作看作一项非常困难的事情。也有那些传播和理解所有这些信息，并且使用这些信息做出好的，听起来具有技术性的决定的人。正如我以前是一名DBA时喜欢说的，所有这些对我来说看上去像一个大谜团。把这些所有的很好的组合在一起就是挑战。你是哪一种人？<br /><br />许多DBA是随时侯命的。他们会在白天或晚上的所有时间接到呼叫去解决他们的数据库出现的致命问题。数据库是商业信息技术基础组织的必不可少的组成部分。没有数据，就没有必要拥有一个计算机系统。数据推动商业。假如amazon.com的网站不能在数据库中搜索产品并且假如没有人能够为他们的产品下订单，那么它会变成什么样？它就不会在商业中存在很久。当数据库down掉，即使只是很短的时间，公司也会损失重大。基于这个原因，DBA到达现场后必须尽可能迅速的解决问题。许多公司有自己的DBA团队以便可以轮流待命。这些DBA 24x7小时的维持数据库应用程序。假如工作需要的话，你准备好随时候命了么？<br /><br />一些DBA的职责包括为软件打补丁或者对数据库做些改变。通常，这些操作不能在公司职员工作的时候做，因为此时数据库必须运行以便他们能够工作。这意味着DBA经常不得不在很早或者深夜甚至周末，总之，在正常工作时间以外来完成工作。你准备好在非正常时间工作，或者你在找一个朝九晚五的工作？<br /><br />对DBA而言，需要掌握的一个重要内容就是通常被称为&ldquo;软技术&rdquo;的东西。DBA需要在团队中很好的工作，通常团队是在变化的，如系统管理员，网络管理员，应用程序开发人员，项目经理和其他人。DBA要能够用流利的英语解释复杂的技术概念，让团队中其他人明白。DBA还要能够在数据库相关问题上指挥团队队员。你的软技术怎么样？<br /><br />下面不是全部列表，但是包括了DBA的典型职责：<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 把监视数据库实例当作每日必做工作以保证其可用性。解决不可用的问题。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 收集系统统计和性能信息以便定向和配置分析。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 配置和调整数据库实例以便在应用程序特定要求下达到最佳性能。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 分析和管理数据库安全性。控制和监视用户对数据库的访问。必要时审计数据库的使用。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 监视备份程序。必要时提供恢复。测试备份与恢复程序。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 升级RDBMS软件并且在必要时使用补丁。必要时升级或者迁移数据库实例。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 通过数据库相关动作来支持应用程序开发人员。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 跟随数据库趋向和技术。当可应用时使用新技术。安装，测试和评估Oracle新的相关产品。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 执行存储和物理设计。均衡设计问题以完成性能优化。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 创建，配置和设计信的数据库实例。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 诊断，故障检测和解决任何数据库相关问题。必要时联系Oracle支持人员以便使问题得到较好的解决。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 确保Oracle网络软件（SQL*Net, Net8, Names, OiD）配置和运行的很好。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 与系统管理员（Unix &amp; NT）一起工作以保证Oracle相关事务得到很好的处理。<br />&bull;&nbsp; &nbsp; &nbsp; &nbsp; 为有效的，定期的维护数据库创建任何必要的脚本。<br /><br />前面各段的问题是为了使你考虑一名DBA该做些什么，帮助你决定这是不是适合你的职业。我并非意味着假如你的目标是成为DBA这些会阻止你。我只是尝试着展现一些事实。我看到过一些DBA一旦被实际工作打击了就一蹶不振。他们花费时间，精力和一些金钱获得了他们的第一份DBA工作。我个人认为这个职业非常有价值。而且我无法想像现在做任何其他的会怎样。所以，这一段帮助你决定这是不是你希望从事的。假如它是，那么尽你所有去得到它！<br /><br /><br /><span style="color: #ff0000;">我怎样得到第一份DBA工作？</span><br />你已经阅读了前面的段落并且认为成为一名DBA是一个好的职业。祝贺你！我希望你的职业能变成你想像得那么令人兴奋和有意义。那么，你如何找到第一份DBA工作？这个问题我已经听别人问了许多许多遍。<br /><br />在90年代早期，因特网急速发展。它使公司象草一般萌芽。公司蜂拥而至并且开始创建他们在网上的形象。几乎所有这些有网站的公司都需要一个数据库作为web应用的后台。不幸的是，当时在该领域却没有那么多DBA。在IT业，DBA变得奇缺。那段时间里，得到一份DBA工作看上去只要可以拼出&ldquo;Oracle&rdquo;或者可能只是在大学里接触过一学期的数据库就行。为了使生活变得更好，DBA的匮乏促使公司付给有潜力的职员很高的薪水。假如你想要成为一名DBA，很容易，非常容易。你需要做的就是证明你了解什么是数据库然后工作就会比你预期的更早的出现在你面前。<br /><br />然后因特网的泡沫破灭了。大量投产因特网的公司破产。许多给公司工作的DBA重新寻找工作。缺少DBA的公司找到一名有DBA经验的人比以前容易得多。在21世纪初期，由于经济并不十分稳固，因此生活并不容易（至少在美国如此）。公司都勒紧了他们的裤腰带。所有这些转化为更少的工作机会和DBA候选人更少的工作空缺。<br /><br />得到第一份DBA工作的最艰难的部分是每一个职位都要求有一些工作经验。如果你从公司的角度出发，你就可以理解为什么对DBA职位而言经验是必需的。假如他没有一点经验，你会付给这个人很高的工资让他去操作，维护和运行你IT基础组织的最大最重要的一部分么？你的公司会付钱给一名没有经验的DBA么？并且，在等待他成长起来的过程中可能会损失上百万美元的收入。对大多数公司而言，这些问题的答案肯定是&lsquo;不&rsquo;。所以，没有经验，获得你的第一份DBA工作是很困难的。<br /><br />第一份DBA工作现在成了恶性循环的境遇。假如我没有任何经验，我怎样才能得到DBA的工作呢？我没有工作的话又怎么能得到DBA经验呢？这是要战胜的最困难的障碍。最困难的部分是获得第一个DBA工作。这部分的剩下部分将针对实现你第一个DBA工作的目标给你一些建议。<br /><br /><strong>提示#1:接受教育。</strong>--尽可能多的学习有关数据库的知识。这很可能将占用你正常工作以外的部分时间也精力。参加本地大学举办的数据库培训班。许多培训公司都会举办数据库管理员的培训班。假如你的老板不资助你的学习，那么你可能不得不自己支付这笔费用。许多DBA职业要求至少为计算机科学或相关专业本科以上学历，因此你必须至少有那样的文凭。<br /><br /><strong>提示#2:锻炼成为DBA。</strong>--许多数据库供应商都允许你下载他们数据库系统的测试版或评估版。下载一份并且在自己的个人电脑上安装软件。练习使用数据库。故意破坏数据库并且尝试修复它。尝试着履行你所能想到的尽可能多的DBA职责。测试和磨练你在自己的测试平台上的技能这样你就可以证明你的数据库管理能力。<br /><br /><strong>提示#3:获得认证。</strong>--许多数据库提供商都提供自己的数据库产品的认证。许多公司现在都把认证看作是一种标准。需要记住的一件事是仅获得认证是不够的。通过DBA认证测试并不意味着你知道如何管理一个数据库。它只是告诉你以后可能的老板，现在你拥有了一定的技术。它还告诉你的老板你对DBA工作的态度是很认真的。我看到许多人抱怨他们已经得到了认证但是没有经验，却仍然不能得到第一份DBA工作。认证本身并不能使你得到工作，但它是无害的。即使没有其他的，在你进行认证的时候你也已经学到了许多知识。只是不要依赖认证来给你带来你要找的工作。你需要的比这还要多。但它会在最后帮助你。<br /><br /><strong>提示#4:利用你现有的技能。</strong>--许多DBA具有系统管理员背景。其他的有应用程序开发背景。假如可能，查看你能否利用现有的技能来得到工作。现在的目标就是为你和你的老板创造一个双赢的局面。例如，让我们假设你已经是一名系统管理员而想进入DBA领域。也许你会找到一份工作，这份工作一部分时间里可以用到你的系统管理技能，并且在剩下的时间里可以使你涉及到数据库管理领域。假如你已经是一名某个产品平台上的DBA但你希望转到其他产品平台，那么看看你能否找到一份同时接触两个产品平台的工作。这样，公司和你都得到了想要的。在你定向到了DBA工作后，你可以试着得到一个能让你全职作它的职位，也许还可以在同一个公司中。<br /><br /><strong>提示#5:利用现在的机会。</strong>--有时候，一个人进入DBA领域仅仅需要的是正确的地方和正确的时机。假如你现在的老板有一个机会让你进行任何数据库的项目，抓住这个机会！任何数据库经验就比没有数据库经验要好。让你的管理者知道你十分积极的在寻找任何可能的数据库机会。他们就有可能在下次机会到来的时候想到你。进行这些数据库项目以及看到你要成为一个DBA的渴望以后，他们可能会决定培训你，提拔你。许多许多人都是以这种方式获得他的第一个DBA工作，在进行了一些数据库相关的项目后不知不觉的成为一名较低级的DBA。通常当一名DBA离开公司后，公司将在内部寻找一个候选人，假如他们认为这名候选人是可训练的话。<br /><strong><br />提示#6:寻找较低级的DBA职位。</strong>--假如你只是为了一个较低级的DBA工作，看到DBA职位的需求描述说他们正在寻找高级DBA或者其他的。所以，让我们严谨一些。你并没有一个高级方面的经验。我已经讨论过了对于这样的职位为什么公司不会考虑你。但是他们会在低级的职位上考虑你。低级的DBA在高级DBA的指导下完成工作。他们摸索窍门。一般来说，高级DBA对数据库承担责任，同时也获得所有的荣誉。但是不要焦急。随着你的事业发展，你将会有越来越多的责任和得到越来越多的信任。因为你没有任何经验，你应该从这里开始启航。<br /><br />我也听到过一些公司寻找一名高级DBA，但是到最后，他们实际想要雇一名低级的DBA。你或许希望申请这样的职位虽然你也许没有资格。他们可能还是会决定雇佣你。但是提前说明你仍然在摸索阶段并且已经是较低级的DBA水平。不要试图欺骗他们让他们认为你是高级DBA的水平。这只会降低你得到这项工作的机会。<br /><br />这些提示将帮助你得到第一份DBA的工作。祝你在寻找工作时有好运气。当你已经找到了第一份DBA工作后，继续下面的部分来学习如何往下走下去。<br /><br /><br /><span style="color: #ff0000;">我刚得到我的第一份工作！现在该怎样？</span><br /><br />祝贺你！你现在是DBA俱乐部的正式成员了！对于这份梦寐以求的令人激动的职业，你准备好了么？你的工作才刚开始并且你在学习上已经落在后面。你将会发现要成为一名高效的数据库管理员有大量的知识你必须掌握。你的第一年或前两年将花费比以前更多的时间来学习。假如你发现学习知识的数量使你大脑超负荷，那么休息一下，歇口气，然后再回到学习中去。为了帮助你继续走下去，你可以按照下面的方法进行：<br /><br /><strong>步骤#1: 关系型数据库理论</strong> &ndash;这部分我假设你将管理的数据库是一个&ldquo;关系型&rdquo;数据库。其他数据库模型也存在，但是关系型模式是近二十年工业上占统治地位的一种数据库模式。假如你的数据库系统是其他的模式，那么学习它的理论。相关数据库理论是十分重要的。它是其他一切的基础。我也看到许多跳到数据库管理职位的人从不想去学习纯粹的关系型数据库理论。不可避免的，在他们的事业中对理论基础的匮乏作为缺点暴露了出来。假如你对关系型数据库理论理解得很好，那么你将非常容易的在任何平台的关系型数据库管理系统（RDBMS）中转变。我使用Oracle数据库，或者IBM的DB2，或者微软的SQL Server是无关紧要的。他们都是关系型数据库系统。他们在最底层都在做着相同的事情。区别在于他们怎样去做相同的事情。纯粹的关系型数据库理论对于较低级的DBA来说并非必需的。但是假如你想要超越低级DBA的水平它就是十分重要的。许多大学的教科书都很好的包含了关系型数据库的理论。其中一本被广泛使用的教科书就是由Elmasri and Navathe编写的数据库系统基础，Bejamin/Cummings Press。<br /><br /><strong>步骤#2: 彻底的学习查询语言</strong> &ndash;数据库都有语言让你能够从数据库中得到数据，把数据放到数据库中，以及修改数据库中的数据。对于关系型数据库而言，这种语言就是结构化查询语言（SQL）。这门语言是你与数据库接触的工具。不能让这个工具成为以后学习的障碍，这一点很重要。在你的测试数据库中练习不同的SQL语句直到他们变成了你的习惯。这方面的一本非常好的书叫做Oracle 9i完全参考（Oracle 9i The Complete Reference）由Loney 和Koch编写，Oracle Press。每一名Oracle DBA都应该在他事业的早期阅读这本书。Oracle 9i参考手册（Oracle 9i SQL Reference manual）是另一个很重要的知识来源。在他们的技术网站TechNet上（<a href="http://technet.oracle.com/" target="_blank"><span style="color: #108ac6;">http://technet.oracle.com</span></a>）你可以访问所有的Oracle在线文档。你必须注册一个账号，但是它是免费的。每个都应该在TechNet上有一个账号。<br /><br /><strong>步骤#3: 开始学习基本的数据库管理工作</strong> &ndash;这难道不是你最开始在这里的原因？为什么它在列表的第三位？我们尝试着建造一个知识的金字塔，我强烈的感觉到一个人需要知道关系型数据库理论和SQL，并且在你学习如何进行基本的数据库管理工作时把他们当作工具来使用。这些工作包括启动和关闭数据库，备份和恢复数据库，以及创建/删除/修改数据库对象。对于Oracle数据库管理而言，在市面上有大量的书籍可以给你所期望的一个很好的体会。这本书是Oracle 9i DBA手册（Oracle 9i DBA Handbook by Loney on Oracle Press）。我知道的大多数DBA都在他们事业的早期不只一遍的阅读过这本书。这里，你应该同时阅读和理解Oracle 9i 概念指导，Oracle 9i管理员指导，以及Oracle 9i备份与恢复指导（Oracle 9i Concepts Guide, the Oracle 9i Administrator&rsquo;s Guide, and the Oracle 9i Backup and Recovery Guide）都来自Oracle文档。<br /><br /><strong>步骤#4: 阅读，阅读，再阅读</strong> &ndash;由于你才刚开始你的DBA职业生涯，因此你正在开始为你的技能奠定基础。这需要一段很长的时间去形成，吸收和领会所有你将学到的知识。毫无疑问的，比你资深的DBA由许多工作要做，因此他们可能不会总是腾出大量时间辅导你的学习。你不得不靠自己学习很多东西。这就是阅读的目的。市面上有许多书籍可以解答许多数据库相关的话题。Oracle Press是Oracle公司的官方出版社，有大量的Oracle相关书籍。同时也有其他的出版社，如Wrox Press 和 O&rsquo;Reilly Press。你也可以找到Oracle文档来阅读。并且还有许多网站和新闻组。尽可能多的读书使你能够继续下去。还有，不只一遍的阅读它们可以使你吸收你第一次阅读时错过的内容。<br /><br /><strong>步骤#5: 创建测试案例</strong> &ndash;我经常看到初学者问一些很基础的问题，其实假如他们花一些时间来考虑，这些问题都是很容易解答的。毫无疑问的，在你开始学习Oracle的时候你会有许多的问题。看看这些问题你能不能自己回答出来。例如，我又一次被问到能不能向有唯一性约束的列中插入空值。最开始，这看上去也许不是很容易回答的问题。但它却是非常容易去试验的！只需要创建一个简单的表。在其中的一列，假如唯一性约束。尝试着在该列插入一个空值。有效么？你应该能够非常容易的回答出这个问题了。那么，为什么要创建这些案例呢？一个原因是这样做可以提高你解决问题的能力。创建这些案例需要的技能就是解决问题用到的技能。解决问题的技能将会对你的DBA事业有很大的帮助。另一个原因是随着你的事业的发展，你将经常需要创建更复杂的测试案例以便保证数据库和应用程序的成功。在将来，甚至简单的测试案例也可以组成更复杂的数据库和应用程序分解。<br /><br /><strong>步骤#6: 找一个良师</strong> &ndash;一个良师能够为你的DBA生涯（或者其它类似的职业）引领方向。他们能够给你指示，回答问题以及在你的DBA的成长过程中帮助你节约一些时间。但愿这篇文章能够在你事业发展的一段时间内起到良师益友的作用。假如你与一名资深的DBA共同工作，那么那个人应该有责任为你的事业进行有益的指导。你也可以同时选择其他的人指导你。<br /><br /><strong>步骤#7: 参加本地用户群</strong> &ndash;许多跨国家的城市有本地用户群，他们定期聚会讨论数据库相关的话题。假如可能，参加其中一个本地用户群。这将给你一个与他人相互交流的很好的方法。<br /><br /><br /><br /><span style="color: #ff0000;">我如何能够从一名DBA初学者变为一个具有中级水平的DBA？</span><br /><br />你已经成为DBA一段时间了，你现在希望你的技术水平提高一阶么？下一步该怎么做？首先，往回看前面的部分，确认你已经完成了所有的步骤。彻底理解SQL语言是十分重要的。理解关系型数据库理论和掌握基本的数据库管理任务也是非常重要的。到如今，你应该阅读文档和其他书籍到已经郁闷了。假如没有，那么你还没准备好继续深造，增长你的DBA的技术水平。假如你已经准备好继续了，我已为你的继续深造准备了一些方法。<br /><br /><strong>步骤#1: 学习操作系统和你的服务器硬件</strong> &ndash; 正如我前面所说，数据库存在于操作系统和服务器硬件之上。理解这些组成部分如何工作是很必要的。你应该知道如何与特殊的操作系统相合。你如何删除或者编辑文件？假如你的操作系统是Unix，你应该掌握命令行以及Unix命令如何辅助你工作。对于运行在Windows或其他操作系统上而言也是一样的。你同时需要对服务器的硬件有一定的了解。物理内存和虚拟内存有什么区别？RAID是什么以及不同的级别是如何产生影响的？为什么数据库喜欢更多的物理硬盘而非一个大硬盘卷？你需要知道这些事情以便你能够容易的与系统管理员进行如何配置好你的服务器以便使它能够充分的支持数据库方面的交谈。<br /><br /><strong>步骤#2: 学习应用程序设计因为它与数据库相关</strong> &ndash; 如前面所述，数据库存在于操作系统与数据库应用程序之间。你真的需要这两者。SQL语言是如何帮助创建好的应用程序的？绑定变量是什么并且为什么他们很重要？Tom Kyte 写了一本非常好的书，在Oracle应用程序设计上给出了很好的建议。他的Expert One-on-one Oracle书可在 Wrox Press找到。我强烈推荐阅读此书。他详细的叙述了那些能够生成和破坏Oracle应用程序的东西。你需要知道这些，因为你的应用程序开发人员希望从你这里得到指导和数据库知识。学习任何与应用程序设计有关的知识。也许参加一个关于软件工程，操作系统或数据结构的课程班会有好处。<br /><br /><strong>步骤#4: 取得认证</strong> &ndash; 也许你的工作并不需要，但是取得认证一定对你有益。作为DBA的每一天里，你学到了许多新的和令人激动的事情。也许在你职业生涯的这段时间里，有几天你没学到任何新的东西。但你仍然有很多要学习。成为一名OCP（Oracle Certified Professional） DBA要求你必须已经学到了数据库管理所有方面的基础。我发现在OCP考试的学习过程中，我学到了在我工作中从未接触过的东西。一次我学到了我从未碰到过的一个特殊课题，在后来的日子里我就能够使用那个知识解决问题。假如我从为在OCP考试中学倒它，那么我永远也不会用那种特殊的方法去解决问题。这已经一次次的发生在我的面前。有的人可能会说认证实际上真的不值得。我要说它只会对你有益无害。所以，去取得认证吧！<br /><br /><strong>步骤#5: 获得一个资源库</strong> &ndash; 在前面的部分中，我指出每个DBA都应该在Technet上有个账号。这是你其中一个主要资源。但是同时还有许多其他资源。很多人共享他们的Oracle知识。假如你还没有开始，你应该用网络浏览器去搜索并收集很多Oracle资源。愿意的话，你可以从访问我的网站（<a href="http://www.peasland.net/" target="_blank"><span style="color: #108ac6;">http://www.peasland.net</span></a>）开始。下面是一些Oracle DBA必须了解得网站列表：<br />&nbsp; &nbsp; &nbsp; &nbsp; Ask Tom &ndash; <a href="http://asktom.oracle.com/" target="_blank"><span style="color: #108ac6;">http://asktom.oracle.com</span></a><br />&nbsp; &nbsp; &nbsp; &nbsp; Jonathan Lewis web site - <a href="http://www.jlcomp.demon.co.uk/" target="_blank"><span style="color: #108ac6;">http://www.jlcomp.demon.co.uk/</span></a><br />&nbsp; &nbsp; &nbsp; &nbsp; Ixora (Steve Adams) &ndash; <a href="http://www.ixora.com.au/" target="_blank"><span style="color: #108ac6;">http://www.ixora.com.au</span></a><br />&nbsp; &nbsp; &nbsp; &nbsp; Orapub &ndash; <a href="http://www.orapub.com/" target="_blank"><span style="color: #108ac6;">http://www.orapub.com</span></a><br />&nbsp; &nbsp; &nbsp; &nbsp; Metalink (Oracle支持网站) &ndash; <a href="http://metalink.oracle.com/" target="_blank"><span style="color: #108ac6;">http://metalink.oracle.com</span></a><br /><br />还有许多其它的好网站。<br /><br /><strong>步骤#6: 开始在不同的新闻组和论坛上交流</strong> &ndash; 也许你已经发现了他们，但假如现在你还没有那么是时候去开始了。有许多的新闻组和论坛可以回答你的任何Oracle问题。在Oracle群落里还有许多高手愿意和你共享他们的知识。你所要做的就是提问。下面是一个列表包含了可以开始交流的最好的因特网团体：<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; Usenet newsgroups &ndash; comp.databases.oracle.server 和 comp.databases.oracle.misc 是两个可以交流的非常著名的世界性的新闻组。他们拥有大量的针对Oracle问题的交流卷宗。观看这些组的最好的方法式使用新闻广播员。但是假如你想通过基于web的方式访问，也可以通过Google搜索引擎搜索它。&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(<a href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;group=comp.databases.oracle" target="_blank"><span style="color: #108ac6;">http://groups.google.com/groups? ... mp.databases.oracle</span></a>)<br />&nbsp; &nbsp; &nbsp; &nbsp; Quest Pipelines &ndash; 当他们在最开始还属于软件提供商RevealNet的时候，被称为the RevealNet Pipelines。现在，Quest购买了RevealNet 并且拥有Pipelines 。因为Pipelines是中等的，所以这些是我最喜欢的。你可以在这里找到Pipelines&nbsp;&nbsp;(<a href="http://www.quest-pipelines.com/index.asp" target="_blank"><span style="color: #108ac6;">http://www.quest-pipelines.com/index.asp</span></a>)。<br /><br />观察别人是如何经历考验和磨难的是一件好事。假如你有问题，可以自由的在群里提出来。假如你要提出问题，通常应该包括一些信息，比如你的Oracle版本和Oracle运行的平台。这些将会得到有很大的差别的答案。假如你忘记了，会有人提醒你！甚至你不用提问也可以从其他人的答案中学到许多知识。我已经记不得多少次我之所以能够解决问题完全是因为我记得其他人在新闻组里问过相同的问题。<br /><br /><br /><span style="color: #ff0000;">我如何从一名具有中级水平的DBA转变为一名高级DBA?</span><br /><br />好，作为DBA你已经坚持不懈的努力了很长时间。你感到自己已经准备好往前再走一步。成为一名高级DBA需要什么？下面的部分将帮助你走下去。<br /><br /><strong>步骤#1: 阅读所有的文档 </strong>&ndash; Oracle文档通常并不是很容易阅读的。无数次，你翻阅文档只是为了要弄清整件事情。假如文档是最好的东西，那么那些站在你的书架里的Oracle书籍就不会有市场。但是文档确实包含了一些无法在任何其他地方找到的信息。例如，你无法找到每一个专门的INIT.ORA参数或V$视图的详细说明。书本上也许会涉及一部分，但是Oracle文档却包含它们所有。我遇到过一个非常厉害的高级DBA，他没有从头至尾的阅读过Oracle文档。这不是偶然的。Oracle文档是必须阅读的。也许到现在为止你已经读过Oracle概念指导十二遍了。但是当Oracle 10i发布了，你还要再次阅读。任何有关10i的新概念将在文档里记录。假如你真的想更上一层，那么，去阅读那些文档。不要逃避它。<br /><br /><strong>步骤#2: 成为一名专家</strong> &ndash; Oracle数据库是一个非常复杂的东西。为了更上一层，你必须精通产品的许多组成部分。以备份与恢复开始。成为一名备份与恢复的专家。故意的破坏数据库然后察看如何恢复它。尝试以任何可能的方式破坏数据库然后查看还有没有可能恢复。你将彻底的理解备份与恢复的概念。在你成为了备份与恢复的专家以后，再去成为其他领域的专家。你会有无穷无尽的题目要去掌握。在你整个职业生涯中都保持如此。但是请记住，无论你有多么专业，在某些领域，某些人会在某些方面知道的比你多。不要带个人情绪。只是尽可能多的从那个人那里学到知识。<br /><br />Route <strong>#3: 积极参加新闻组，论坛和用户组</strong> &ndash; 在前面，我提过为什么不同的新闻组和论坛是学习新知识的很好的地方。现在轮到你进行下一步并且去回答任何你能够回答的问题。你将会惊讶于在这过程中你能学到那么多！<br /><br />Route <strong>#4: 写白皮书并且展示它们</strong> &ndash; 这与前面提到的方法类似。首先，共享你拥有的知识是很重要的。假如你的职业生涯已经走到这一步，那么从某种意义上讲，是离不开他人的贡献的。所以，现在是你为他人奉献的时候了。第二，当你企图共享你的信息的时候会有令人惊异的事情发生。在你要用清楚的，简练的语言表述问题以便其他人能够使用时，那些信息在你的头脑里经过了一个令人瞠目的过程。这个过程使你巩固了知识，这是无法通过其它方法进行的。所以在白皮书中共享那些信息，讨论会，以及新闻组和论坛都是你学习和使你的能力更上一层的非常好的方法。顺着这条路，你应该作两件事。第一，认识到你将会犯错误。其他人将会很高兴的指出那些错误，有时在某种意义上那并不是很好。不要企图掩藏你的错误。承认它们并从它们那里学习。第二，学会说你不知道答案而不是企图以欺骗的方式通过。人们早晚会知道你在企图蒙蔽他们。简单的告诉他们现在你对答案并不肯定，但你会在查到答案后回来告诉他们。假如你时刻谨记这两件事，你就不会违背你的诚实而且你将成长为一名职业的IT人。<br /><br /><strong>步骤#5: 成为解决Oracle问题的专家</strong>&ndash; 高级DBA通常都是被看作是解决复杂的Oracle问题的人。你将会用到你所有的技术来解决许多问题，这些技术都是你的职业生涯中积累下来的。我前面提到的任何事都将会在解决问题的过程中用到；文档，书籍，新闻组，测试案例，和其它DBA都将辅助你解决问题。<br /><br /><strong>步骤#6: 成为性能调优的专家</strong>&ndash; 高级DBA通常都是被看作是调整数据库和应用程序性能的人。假如你是高级DBA但是你却不能分析性能瓶颈，那么你的公司将会到别处寻找这些服务。<br /><strong><br />步骤#7: 成为承载能力计划的专家</strong>&ndash; 高级DBA通常都是被看作是根据数据增长量和交易增长来计划数据库承载能力的人。高级DBA需要在影响应用程序性能以前发现系统瓶颈。例如，DBA应该知道在数据库将可用的磁盘空间用完以前预置更多的磁盘空间。不密切关注承载能力计划将会导致生产数据库宕机。<br /><strong><br />步骤#8: 密切关注新的技术</strong>&ndash; 高级DBA应该对IT界的关数据库技术的未来有好的建议。有什么可用的技术可以帮助数据库？例如，学习存储领域网的优缺点以及如何把它们应用到数据库系统。有什么技术在不远的将来可以用，哪些能够帮助我们？例如，写这篇文章的时候，linux操作系统正在变得越来越流行。Lunix会给你的数据库操作系统平台带来些什么？它能为你的公司工作么？<br /><br /><br />结论<br /><br />从获得第一份工作，到从一名初级的DBA成长成一名高级DBA，我希望这篇文章在如何度过你的职业生涯的各个阶段方面给了你一些建议。无论你现在处在你的DBA职业生涯的哪一阶段都可以用到这篇文章。</p>
<p>本文转自：<a href="http://www.oracle.com.cn/viewthread.php?tid=70746&amp;extra=page%3D1"><span style="color: #108ac6;">http://www.oracle.com.cn/viewthread.php?tid=70746&amp;extra=page%3D1</span></a></p>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://xinlingwuyu.javaeye.com/blog/211158#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Jul 2008 16:16:12 +0800</pubDate>
        <link>http://xinlingwuyu.javaeye.com/blog/211158</link>
        <guid>http://xinlingwuyu.javaeye.com/blog/211158</guid>
      </item>
      <item>
        <title>JS的正则表达式 </title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/210566" style="color:red;">http://xinlingwuyu.javaeye.com/blog/210566</a>&nbsp;
          发表时间: 2008年07月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><br />//校验是否全由数字组成 <br />[code] function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } [/code] <br /><br />//校验登录名：只能输入5-20个以字母开头、可带数字、&ldquo;_&rdquo;、&ldquo;.&rdquo;的字串 <br />[code] function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; if (!patrn.exec(s)) return false return true } [/code] <br /><br />//校验用户姓名：只能输入1-30个以字母开头的字串 <br />[code] function isTrueName(s) { var patrn=/^[a-zA-Z]{1,30}$/; if (!patrn.exec(s)) return false return true } }} //校验密码：只能输入6-20个字母、数字、下划线 [code] function isPasswd(s) { var patrn=/^(\w){6,20}$/; if (!patrn.exec(s)) return false return true } [/code] <br /><br />//校验普通电话、传真号码：可以&ldquo;+&rdquo;开头，除数字外，可含有&ldquo;-&rdquo; <br />[code] function isTel(s) { //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/; var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true } [/code] <br /><br />//校验手机号码：必须以数字开头，除数字外，可含有&ldquo;-&rdquo; <br />[code] function isMobil(s) { var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true } [/code] <br /><br />//校验邮政编码 <br />[code] function isPostalCode(s) { //var patrn=/^[a-zA-Z0-9]{3,12}$/; var patrn=/^[a-zA-Z0-9 ]{3,12}$/; if (!patrn.exec(s)) return false return true } [/code] <br /><br />//校验搜索关键字 <br />[code] function isSearch(s) { var patrn=/^[^`~!@#$%^&amp;*()+=|\\\][\]\{\}:;'\,.&lt;&gt;/?]{1}[^`~!@$%^&amp;()+=|\\\] [\]\{\}:;'\,.&lt;&gt;?]{0,19}$/; if (!patrn.exec(s)) return false return true } function isIP(s) //by zergling { var patrn=/^[0-9.]{1,20}$/; if (!patrn.exec(s)) return false return true } [/code] <br /><br /><span style="font-size: 18pt;">正则表达式</span> <br />[code] "^\\d+$"　　//非负整数（正整数 + 0） "^[0-9]*[1-9][0-9]*$"　　//正整数 "^((-\\d+)|(0+))$"　　//非正整数（负整数 + 0） "^-[0-9]*[1-9][0-9]*$"　　//负整数 "^-?\\d+$"　　　　//整数 "^\\d+(\\.\\d+)?$"　　//非负浮点数（正浮点数 + 0） "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"　 //正浮点数 "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"　　//非正浮点数（负浮点数 + 0） "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"　 //负浮点数 "^(-?\\d+)(\\.\\d+)?$"　　//浮点数 "^[A-Za-z]+$"　　//由26个英文字母组成的字符串 "^[A-Z]+$"　　//由26个英文字母的大写组成的字符串 "^[a-z]+$"　　//由26个英文字母的小写组成的字符串 "^[A-Za-z0-9]+$"　　//由数字和26个英文字母组成的字符串 "^\\w+$"　　//由数字、26个英文字母或者下划线组成的字符串 "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"　　　　//email地址 "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"　　//url "^[A-Za-z0-9_]*$" [/code] <br /><br /><span style="font-size: 18pt;">正则表达式使用详解</span> <br /><br />简介 <br /><br />简单的说，正则表达式是一种可以用于模式匹配和替换的强有力的工具。其作用如下： <br />测试字符串的某个模式。例如，可以对一个输入字符串进行测试，看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 <br />替换文本。可以在文档中使用一个正则表达式来标识特定文字，然后可以全部将其删除，或者替换为别的文字。 <br />根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。 <br /><br />基本语法 <br /><br />在对正则表达式的功能和作用有了初步的了解之后，我们就来具体看一下正则表达式的语法格式。 <br /><br />正则表达式的形式一般如下：　　 <br /><br />/love/　　其中位于&ldquo;/&rdquo;定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入&ldquo;/&rdquo;定界符之间即可。为了能够使用户更加灵活的定制模式内容，正则表达式提供了专门的&ldquo;元字符&rdquo;。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符，可以用来规定其前导字符（即位于元字符前面的字符）在目标对象中的出现模式。 <br />较为常用的元字符包括： &ldquo;+&rdquo;， &ldquo;*&rdquo;，以及 &ldquo;?&rdquo;。 <br /><br />&ldquo;+&rdquo;元字符规定其前导字符必须在目标对象中连续出现一次或多次。 <br /><br />&ldquo;*&rdquo;元字符规定其前导字符必须在目标对象中出现零次或连续多次。 <br /><br />&ldquo;?&rdquo;元字符规定其前导对象必须在目标对象中连续出现零次或一次。 <br /><br />下面，就让我们来看一下正则表达式元字符的具体应用。 <br /><br />/fo+/　　因为上述正则表达式中包含&ldquo;+&rdquo;元字符，表示可以与目标对象中的 &ldquo;fool&rdquo;, &ldquo;fo&rdquo;, 或者 &ldquo;football&rdquo;等在字母f后面连续出现一个或多个字母o的字符串相匹配。 <br /><br />/eg*/　　因为上述正则表达式中包含&ldquo;*&rdquo;元字符，表示可以与目标对象中的 &ldquo;easy&rdquo;, &ldquo;ego&rdquo;, 或者 &ldquo;egg&rdquo;等在字母e后面连续出现零个或多个字母g的字符串相匹配。 <br /><br />/Wil?/　　因为上述正则表达式中包含&ldquo;？&rdquo;元字符，表示可以与目标对象中的 &ldquo;Win&rdquo;, 或者&ldquo;Wilson&rdquo;,等在字母i后面连续出现零个或一个字母l的字符串相匹配。 <br /><br />有时候不知道要匹配多少字符。为了能适应这种不确定性，正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。 <br /><br />{n} n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。 <br /><br />{n,} n 是一个非负整数。至少匹配 n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 <br /><br />{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 <br /><br />除了元字符之外，用户还可以精确指定模式在匹配对象中出现的频率。例如，/jim {2,6}/ 上述正则表达式规定字符m可以在匹配对象中连续出现2-6次，因此，上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。 <br />在对如何使用正则表达式有了初步了解之后，我们来看一下其它几个重要的元字符的使用方式。 <br />[code] \s：用于匹配单个空格符，包括tab键和换行符； \S：用于匹配除单个空格符之外的所有字符； \d：用于匹配从0到9的数字； \w：用于匹配字母，数字或下划线字符； \W：用于匹配所有与\w不匹配的字符； . ：用于匹配除换行符之外的所有字符。 [/code] <br />（说明：我们可以把\s和\S以及\w和\W看作互为逆运算） <br />下面，我们就通过实例看一下如何在正则表达式中使用上述元字符。 <br />/\s+/ 上述正则表达式可以用于匹配目标对象中的一个或多个空格字符。 <br />/\d000/　如果我们手中有一份复杂的财务报表，那么我们可以通过上述正则表达式轻而易举的查找到所有总额达千元的款项。 <br />除了我们以上所介绍的元字符之外，正则表达式中还具有另外一种较为独特的专用字符，即定位符。定位符用于规定匹配模式在目标对象中的出现位置。 较为常用的定位符包括： &ldquo;^&rdquo;, &ldquo;$&rdquo;, &ldquo;\b&rdquo; 以及 &ldquo;\B&rdquo;。 <br />[code] &ldquo;^&rdquo;定位符规定匹配模式必须出现在目标字符串的开头 &ldquo;$&rdquo;定位符规定匹配模式必须出现在目标对象的结尾 &ldquo;\b&rdquo;定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一 &ldquo;\B&rdquo;定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内， 即匹配对象既不能作为目标字符串的开头，也不能作为目标字符串的结尾。 [/code] <br />同样，我们也可以把&ldquo;^&rdquo;和&ldquo;$&rdquo;以及&ldquo;\b&rdquo;和&ldquo;\B&rdquo;看作是互为逆运算的两组定位符。举例来说： /^hell/　因为上述正则表达式中包含&ldquo;^&rdquo;定位符，所以可以与目标对象中以 &ldquo;hell&rdquo;, &ldquo;hello&rdquo;或&ldquo;hellhound&rdquo;开头的字符串相匹配。 /ar$/　因为上述正则表达式中包含&ldquo;$&rdquo;定位符，所以可以与目标对象中以 &ldquo;car&rdquo;, &ldquo;bar&rdquo;或 &ldquo;ar&rdquo; 结尾的字符串相匹配。 /\bbom/　因为上述正则表达式模式以&ldquo;\b&rdquo;定位符开头，所以可以与目标对象中以 &ldquo;bomb&rdquo;, 或 &ldquo;bom&rdquo;开头的字符串相匹配。/man\b/　因为上述正则表达式模式以&ldquo;\b&rdquo;定位符结尾，所以可以与目标对象中以 &ldquo;human&rdquo;, &ldquo;woman&rdquo;或 &ldquo;man&rdquo;结尾的字符串相匹配。 <br />为了能够方便用户更加灵活的设定匹配模式，正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。例如： <br />[code] /[A-Z]/　　上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。 /[a-z]/　　上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。 /[0-9]/ 　上述正则表达式将会与从0到9范围内任何一个数字相匹配。 /([a-z][A-Z][0-9])+/　上述正则表达式将会与任何由字母和数字组成的字符串，如 &ldquo;aB0&rdquo; 等相匹配。 [/code] <br />这里需要提醒用户注意的一点就是可以在正则表达式中使用 &ldquo;()&rdquo; 把字符串组合在一起。&ldquo;()&rdquo;符号包含的内容必须同时出现在目标对象中。因此，上述正则表达式将无法与诸如 &ldquo;abc&rdquo;等的字符串匹配，因为&ldquo;abc&rdquo;中的最后一个字符为字母而非数字。 <br />如果我们希望在正则表达式中实现类似编程逻辑中的&ldquo;或&rdquo;运算，在多个不同的模式中任选一个进行匹配的话，可以使用管道符 &ldquo;|&rdquo;。例如：/to|too|2/　上述正则表达式将会与目标对象中的 &ldquo;to&rdquo;, &ldquo;too&rdquo;, 或 &ldquo;2&rdquo; 相匹配。 <br />正则表达式中还有一个较为常用的运算符，即否定符 &ldquo;[^]&rdquo;。与我们前文所介绍的定位符 &ldquo;^&rdquo; 不同，否定符 &ldquo;[^]&rdquo;规定目标对象中不能存在模式中所规定的字符串。例如：/[^A-C]/　上述字符串将会与目标对象中除A，B，和C之外的任何字符相匹配。一般来说，当&ldquo;^&rdquo;出现在 &ldquo;[]&rdquo;内时就被视做否定运算符；而当&ldquo;^&rdquo;位于&ldquo;[]&rdquo;之外，或没有&ldquo;[]&rdquo;时，则应当被视做定位符。 <br />最后，当用户需要在正则表达式的模式中加入元字符，并查找其匹配对象时，可以使用转义符&ldquo;\&rdquo;。例如：/Th\*/ 　上述正则表达式将会与目标对象中的&ldquo;Th*&rdquo;而非&ldquo;The&rdquo;等相匹配。 <br />在构造正则表达式之后，就可以象数学表达式一样来求值，也就是说，可以从左至右并按照一个优先级顺序来求值。优先级如下： <br />[code] 1．\ 转义符 2．(), (?:), (?=), [] 圆括号和方括号 3．*, +, ?, {n}, {n,}, {n,m} 限定符 4．^, $, \anymetacharacter 位置和顺序 5．|&ldquo;或&rdquo;操作 [/code] <br /><br /><span style="font-size: 18pt;">使用实例</span> <br />在JavaScript 1.2中带有一个功能强大的RegExp()对象，可以用来进行正则表达式的匹配操作。其中的test()方法可以检验目标对象中是否包含匹配模式，并相应的返回true或false。 <br />我们可以使用JavaScript编写以下脚本，验证用户输入的邮件地址的有效性。 <br />[code] &lt;html&gt; &lt;head&gt; 　 &lt;script language="Javascript1.2"&gt; 　　　　 &lt;!-- start hiding 　　　　 function verifyAddress(obj) 　　　　　{ 　　　　　　var email = obj.email.value; 　　　　　　var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/; 　　　　　　flag = pattern.test(email); 　　　　　　if(flag) 　　　　　　{ 　　　　　　　alert(&ldquo;Your email address is correct!&rdquo;); 　　　　　　　return true; 　　　　　　} 　　　　　　else 　　　　　　　{ 　　　　　　　　alert(&ldquo;Please try again!&rdquo;); 　　　　　　　　return false; 　　　　　　　 } 　　　　　 } 　　　　 // stop hiding --&gt; 　　　 &lt;/script&gt; 　　&lt;/head&gt; 　 &lt;body&gt; 　　 &lt;form onSubmit="return verifyAddress(this);"&gt; 　　　 &lt;input name="email" type="text"&gt; 　　　 &lt;input type="submit"&gt; 　　　 &lt;/form&gt; 　　&lt;/body&gt; &lt;/html&gt; [/code] <br /><br /><span style="font-size: 18pt;">正则表达式对象</span> <br />本对象包含正则表达式模式以及表明如何应用模式的标志。 <br />[code] 语法 1 re = /pattern/[flags] 语法 2 re = new RegExp("pattern",["flags"]) [/code] <br />参数 <br />re <br />必选项。将要赋值为正则表达式模式的变量名。 <br /><br />Pattern <br />必选项。要使用的正则表达式模式。如果使用语法 1，用 "/" 字符分隔模式。如果用语法 2，用引号将模式引起来。 <br /><br />Flags <br />可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用，可用的有： <br />[code] g （全文查找出现的所有 pattern） i （忽略大小写） m （多行查找） [/code] <br /><br /><span style="font-size: 18pt;">示例</span> <br />下面的示例创建一个包含正则表达式模式及相关标志的对象(re)，向您演示正则表达式对象的用法。在本例中，作为结果的正则表达式对象又用于 match 方法中： <br />[code] function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = new RegExp("ain","g"); // 创建正则表达式对象。 r = s.match(re); // 在字符串 s 中查找匹配。 return(r); } [/code] <br /><br />返回值： ain,ain,ain,ain\\ <br />属性 lastIndex 属性 | source 属性\\ <br />方法 compile 方法 | exec 方法 | test 方法\\ <br />要求 版本 3\\ <br />请参阅 RegExp 对象 | 正则表达式语法 | String 对象\\ <br /><br /><span style="font-size: 18pt;">exec 方法</span> <br />用正则表达式模式在字符串中运行查找，并返回包含该查找结果的一个数组。 <br />rgExp.exec(str) <br /><br />参数 <br /><br />rgExp <br />必选项。包含正则表达式模式和可用标志的正则表达式对象。 <br /><br />str <br />必选项。要在其中执行查找的 String 对象或字符串文字。 <br /><br />说明\\ <br />如果 exec 方法没有找到匹配，则它返回 null。如果它找到匹配，则 exec 方法返回一个数组，并且更新全局 RegExp 对象的属性，以反映匹配结果。数组的0元素包含了完整的匹配，而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。 <br />如果为正则表达式设置了全局标志，exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志，exec 忽略 lastIndex 的值，从字符串的起始位置开始搜索。 <br /><br />exec 方法返回的数组有三个属性，分别是 input、index 和 lastIndex。Input 属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。 <br /><br />示例\\ <br />下面的例子举例说明了 exec 方法的用法： <br />[code] function RegExpTest() { var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()) if (ver &gt;= 5.5){ // 测试 JScript 的版本。 var src = "The rain in Spain falls mainly in the plain."; var re = /\w+/g; // 创建正则表达式模式。 var arr; while ((arr = re.exec(src)) != null) document.write(arr.index + "-" + arr.lastIndex + arr + "\t"); } else{ alert("请使用 JScript 的更新版本"); } } [/code] <br /><br />返回值：0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain <br /><br />test 方法\\ <br />返回一个 Boolean 值，它指出在被查找的字符串中是否存在模式。 <br />rgexp.test(str) <br /><br />参数\\ <br />rgexp <br />必选项。包含正则表达式模式或可用标志的正则表达式对象。 <br /><br />str <br />必选项。要在其上测试查找的字符串。 <br /><br />说明 <br />test 方法检查在字符串中是否存在一个模式，如果存在则返回 true，否则就返回 false。 <br />全局 RegExp 对象的属性不由 test 方法来修改。 <br /><br />示例 <br />下面的例子举例说明了 test 方法的用法： <br />[code] function TestDemo(re, s) { var s1; // 声明变量。 // 检查字符串是否存在正则表达式。 if (re.test(s)) // 测试是否存在。 s1 = " contains "; // s 包含模式。 else s1 = " does not contain "; // s 不包含模式。 return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 返回字符串。 } [/code] <br /><br />函数调用：document.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain.")); <br /><br />返回值：'The rain in Spain falls mainly in the plain.' contains 'ain+' <br /><br /><span style="font-size: 18pt;">match 方法</span> <br />使用正则表达式模式对字符串执行查找，并将包含查找的结果作为数组返回。\\ <br />stringObj.match(rgExp) <br /><br />参数\\ <br />stringObj <br />必选项。对其进行查找的 String 对象或字符串文字。 <br /><br />rgExp <br />必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。 <br /><br />说明\\ <br />如果 match 方法没有找到匹配，返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。 <br />match 方法返回的数组有三个属性：input、index 和 lastIndex。Input 属性包含整个的被查找字符串。Index 属性包含了在整个被查找字符串中匹配的子字符串的位置。LastIndex 属性包含了最后一次匹配中最后一个字符的下一个位置。 <br />如果没有设置全局标志 (g)，数组的 0 元素包含整个匹配，而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志，元素 0 到 n 中包含所有匹配。 <br /><br />示例\\ <br />下面的示例演示了match 方法的用法： <br />[code] function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = /ain/i; // 创建正则表达式模式。 r = s.match(re); // 尝试匹配搜索字符串。 return(r); // 返回第一次出现 "ain" 的地方。 } [/code] <br />返回值：ain <br /><br />本示例说明带 g 标志设置的 match 方法的用法。 <br />[code] function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = /ain/ig; // 创建正则表达式模式。 r = s.match(re); // 尝试去匹配搜索字符串。 return(r); // 返回的数组包含了所有 "ain" // 出现的四个匹配。 } [/code] <br />返回值：ain,ain,ain,ain <br /><br />上面几行代码演示了字符串文字的 match 方法的用法。 <br />[code] var r, re = "Spain"; r = "The rain in Spain".replace(re, "Canada"); return r; [/code] <br />返回值：The rain in Canada <br /><br /><span style="font-size: 18pt;">search 方法</span> <br />返回与正则表达式查找内容匹配的第一个子字符串的位置。 <br /><br />stringObj.search(rgExp) <br /><br />参数\\ <br />stringObj <br />必选项。要在其上进行查找的 String 对象或字符串文字。 <br /><br />rgExp <br />必选项。包含正则表达式模式和可用标志的正则表达式对象。 <br /><br />说明 <br /><br />search 方法指明是否存在相应的匹配。如果找到一个匹配，search 方法将返回一个整数值，指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配，则返回 -1。 <br /><br />示例\\ <br />下面的示例演示了 search 方法的用法。 <br />[code] function SearchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain."; re = /falls/i; // 创建正则表达式模式。 r = s.search(re); // 查找字符串。 return(r); // 返回 Boolean 结果。 } [/code] <br />返回值：18 <br /><br /><br /><span style="font-size: 18pt;">正则表达式语法</span> <br />一个正则表达式就是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。 <br /><br />这里有一些可能会遇到的正则表达式示例： <br />[code] JScript VBScript 匹配 /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。 /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字，一个连字符以及一个5位数字组成。 /&lt;(.*)&gt;.*&lt;\/\1&gt;/ "&lt;(.*)&gt;.*&lt;\/\1&gt;" 匹配一个 HTML 标记。 [/code] <br /><br />下表是元字符及其在正则表达式上下文中的行为的一个完整列表： <br /><br />字符 描述 <br />\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如，'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 <br /><br />^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。 <br /><br />$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。 <br /><br />* 匹配前面的子表达式零次或多次。例如，zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 <br /><br />+ 匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。 <br /><br />? 匹配前面的子表达式零次或一次。例如，"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 <br /><br />{n} n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。 <br /><br />{n,} n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 <br /><br />{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。刘， "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 <br /><br />? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 "oooo"，'o+?' 将匹配单个 "o"，而 'o+' 将匹配所有 'o'。 <br /><br />. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符，请使用象 '[.\n]' 的模式。 <br />(pattern) 匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在JScript 中则使用 $0&hellip;$9 属性。要匹配圆括号字符，请使用 '\(' 或 '\)'。 <br /><br />(?:pattern) 匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 <br /><br />(?=pattern) 正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如， 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ，但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。 <br /><br />(?!pattern) 负向预查，在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows"，但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始 <br /><br />x|y 匹配 x 或 y。例如，'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 <br /><br />[xyz] 字符集合。匹配所包含的任意一个字符。例如， '[abc]' 可以匹配 "plain" 中的 'a'。 <br /><br />[^xyz] 负值字符集合。匹配未包含的任意字符。例如， '[^abc]' 可以匹配 "plain" 中的'p'。 <br /><br />[a-z] 字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。 <br /><br />[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。 <br /><br />\b 匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配"never" 中的 'er'，但不能匹配 "verb" 中的 'er'。 <br /><br />\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er'，但不能匹配 "never" 中的 'er'。 <br /><br />\cx 匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。 <br /><br />\d 匹配一个数字字符。等价于 [0-9]。 <br /><br />\D 匹配一个非数字字符。等价于 [^0-9]。 <br /><br />\f 匹配一个换页符。等价于 \x0c 和 \cL。 <br /><br />\n 匹配一个换行符。等价于 \x0a 和 \cJ。 <br /><br />\r 匹配一个回车符。等价于 \x0d 和 \cM。 <br /><br />\s 匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 <br /><br />\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 <br /><br />\t 匹配一个制表符。等价于 \x09 和 \cI。 <br /><br />\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 <br /><br />\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 <br /><br />\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 <br /><br />\xn 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如， '\x41' 匹配 "A"。'\x041' 则等价于 '\x04' &amp; "1"。正则表达式中可以使用 ASCII 编码。. <br /><br />\num 匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。 <br /><br />\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。 <br /><br />\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。 <br /><br />\nml 如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。 <br /><br />\un 匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。 <br /><br /><br /><span style="font-size: 18pt;">优先权顺序</span> <br />在构造正则表达式之后，就可以象数学表达式一样来求值，也就是说，可以从左至右并按照一个优先权顺序来求值。 <br /><br />下表从最高优先级到最低优先级列出各种正则表达式操作符的优先权顺序： <br />[code] 操作符 描述 \ 转义符 (), (?:), (?=), [] 圆括号和方括号 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, \anymetacharacter 位置和顺序 | &ldquo;或&rdquo;操作 [/code] <br /><br />普通字符 <br /><br />普通字符由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符号。 <br /><br />最简单的正则表达式是一个单独的普通字符，可以匹配所搜索字符串中的该字符本身。例如，单字符模式 'A' 可以匹配所搜索字符串中任何位置出现的字母 'A'。这里有一些单字符正则表达式模式的示例： <br />[code] /a/ /7/ /M/ [/code] <br />等价的 VBScript 单字符正则表达式为： <br />[code] "a" "7" "M" [/code] <br />可以将多个单字符组合在一起得到一个较大的表达式。例如，下面的 JScript 正则表达式不是别的，就是通过组合单字符表达式 'a'、'7'以及 'M' 所创建出来的一个表达式。 <br /><br />/a7M/ <br />等价的 VBScript 表达式为： <br /><br />"a7M" <br />请注意这里没有连接操作符。所需要做的就是将一个字符放在了另一个字符后面。</p>
          <br/>
          <span style="color:red;">
            <a href="http://xinlingwuyu.javaeye.com/blog/210566#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 Jul 2008 14:02:40 +0800</pubDate>
        <link>http://xinlingwuyu.javaeye.com/blog/210566</link>
        <guid>http://xinlingwuyu.javaeye.com/blog/210566</guid>
      </item>
      <item>
        <title>字符串 每三位 逗号 分隔</title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/210037" style="color:red;">http://xinlingwuyu.javaeye.com/blog/210037</a>&nbsp;
          发表时间: 2008年07月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>function formatNum(num,digit)//将数字转换成三位逗号分隔的样式<br />&nbsp;{&nbsp;&nbsp; <br />&nbsp;&nbsp;if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(num))<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;alert("wrong!");<br />&nbsp;&nbsp;&nbsp;return num;<br />&nbsp;&nbsp;}&nbsp;&nbsp; <br />&nbsp;&nbsp;var a = RegExp.$1;<br />&nbsp;&nbsp;var b = RegExp.$2;<br />&nbsp;&nbsp;var c = RegExp.$3;&nbsp;&nbsp; <br />&nbsp;&nbsp;var re = new RegExp().compile("(<a href="file://\\d)(\\d{3})(,|$">\\d)(\\d{3})(,|$</a>)");&nbsp;&nbsp; <br />&nbsp;&nbsp;while(re.test(b))<br />&nbsp;&nbsp;&nbsp;b = b.replace(re,"$1,$2$3");&nbsp;&nbsp; <br />&nbsp;&nbsp;if(c &amp;&amp; digit &amp;&amp; new RegExp("^.(<a href="file://\\d">\\d</a>{"+&nbsp;&nbsp; digit&nbsp;&nbsp; +"})(<a href="file://\\d)&quot;).test(c">\\d)").test(c</a>))<br />&nbsp;&nbsp;{&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;if(RegExp.$2&gt;4)<br />&nbsp;&nbsp;&nbsp;&nbsp;c = (parseFloat(RegExp.$1)+1)/Math.pow(10,digit);&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;c = "."+ RegExp.$1;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return a + "" + b + "" + (c+"").substr((c+"").indexOf("."));&nbsp;&nbsp; <br />&nbsp; }</p>
          <br/>
          <span style="color:red;">
            <a href="http://xinlingwuyu.javaeye.com/blog/210037#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 Jul 2008 09:51:05 +0800</pubDate>
        <link>http://xinlingwuyu.javaeye.com/blog/210037</link>
        <guid>http://xinlingwuyu.javaeye.com/blog/210037</guid>
      </item>
      <item>
        <title>ajax利用post传递大量数据解决方法</title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/208325" style="color:red;">http://xinlingwuyu.javaeye.com/blog/208325</a>&nbsp;
          发表时间: 2008年06月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>将url和参数分开解决<br />具体方法如下:</p>
<p>&nbsp;</p>
<p>var resource = "result=.......too many data..........";</p>
<p>var url = "aLink?param1="+param1;</p>
<p>&nbsp;</p>
<p>。。。。。生成XMLHttpRequest对象程序。。。。</p>
<p>&nbsp;</p>
<p>xmlRequest.open("post", url, false);</p>
<p>xmlRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");</p>
<p>xmlRequest.send(resource);</p>
          <br/>
          <span style="color:red;">
            <a href="http://xinlingwuyu.javaeye.com/blog/208325#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jun 2008 18:36:20 +0800</pubDate>
        <link>http://xinlingwuyu.javaeye.com/blog/208325</link>
        <guid>http://xinlingwuyu.javaeye.com/blog/208325</guid>
      </item>
      <item>
        <title>java中文件操作大全</title>
        <author>xinlingwuyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinlingwuyu.javaeye.com">xinlingwuyu</a>&nbsp;
          链接：<a href="http://xinlingwuyu.javaeye.com/blog/208261" style="color:red;">http://xinlingwuyu.javaeye.com/blog/208261</a>&nbsp;
          发表时间: 2008年06月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>一.获得控制台用户输入的信息</strong></p>
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6 0% 50%; padding-bottom: 4px; width: 95%; padding-top: 4px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; border: windowtext 0.5pt solid;">
<div><strong><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_0_55_Open_Image" onclick="this.style.display='none'; document.getElementById('_0_55_Open_Text').style.display='none'; document.getElementById('_0_55_Closed_Image').style.display='inline'; document.getElementById('_0_55_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_0_55_Closed_Image" onclick="this.style.display='none'; document.getElementById('_0_55_Closed_Text').style.display='none'; document.getElementById('_0_55_Open_Image').style.display='inline'; document.getElementById('_0_55_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" /></strong><span id="_0_55_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">/**&nbsp;*/</span><span id="_0_55_Open_Text"><span style="color: #008000;">/**</span><span style="color: #008000;">获得控制台用户输入的信息<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&nbsp;IOException<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_108_357_Open_Image" onclick="this.style.display='none'; document.getElementById('_108_357_Open_Text').style.display='none'; document.getElementById('_108_357_Closed_Image').style.display='inline'; document.getElementById('_108_357_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_108_357_Closed_Image" onclick="this.style.display='none'; document.getElementById('_108_357_Closed_Text').style.display='none'; document.getElementById('_108_357_Open_Image').style.display='inline'; document.getElementById('_108_357_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;getInputMessage()&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;IOException</span><span id="_108_357_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_108_357_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">请输入您的命令∶</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">&nbsp;buffer[]</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">1024</span><span style="color: #000000;">];<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;count</span><span style="color: #000000;">=</span><span style="color: #000000;">System.in.read(buffer);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">[]&nbsp;ch</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">[count</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;">];</span><span style="color: #008000;">//</span><span style="color: #008000;">最后两位为结束符，删去不要</span><span style="color: #008000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</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;">count</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">)buffer[i];<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String(ch);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;str;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</div>
<p>可以返回用户输入的信息，不足之处在于不支持中文输入，有待进一步改进。</p>
<p><strong>二.复制文件</strong></p>
<p>1.以文件流的方式复制文件</p>
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6 0% 50%; padding-bottom: 4px; width: 95%; padding-top: 4px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; border: windowtext 0.5pt solid;">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_0_88_Open_Image" onclick="this.style.display='none'; document.getElementById('_0_88_Open_Text').style.display='none'; document.getElementById('_0_88_Closed_Image').style.display='inline'; document.getElementById('_0_88_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_0_88_Closed_Image" onclick="this.style.display='none'; document.getElementById('_0_88_Closed_Text').style.display='none'; document.getElementById('_0_88_Open_Image').style.display='inline'; document.getElementById('_0_88_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" /><span id="_0_88_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">/**&nbsp;*/</span><span id="_0_88_Open_Text"><span style="color: #008000;">/**</span><span style="color: #008000;">以文件流的方式复制文件<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;src&nbsp;文件源目录<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;dest&nbsp;文件目的目录<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&nbsp;IOException&nbsp;&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_154_489_Open_Image" onclick="this.style.display='none'; document.getElementById('_154_489_Open_Text').style.display='none'; document.getElementById('_154_489_Closed_Image').style.display='inline'; document.getElementById('_154_489_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_154_489_Closed_Image" onclick="this.style.display='none'; document.getElementById('_154_489_Closed_Text').style.display='none'; document.getElementById('_154_489_Open_Image').style.display='inline'; document.getElementById('_154_489_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;copyFile(String&nbsp;src,String&nbsp;dest)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;IOException</span><span id="_154_489_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_154_489_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;in</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileInputStream(src);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(dest);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">file.exists())<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.createNewFile();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;out</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileOutputStream(file);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;c;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">&nbsp;buffer[]</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">1024</span><span style="color: #000000;">];<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_401_457_Open_Image" onclick="this.style.display='none'; document.getElementById('_401_457_Open_Text').style.display='none'; document.getElementById('_401_457_Closed_Image').style.display='inline'; document.getElementById('_401_457_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_401_457_Closed_Image" onclick="this.style.display='none'; document.getElementById('_401_457_Closed_Text').style.display='none'; document.getElementById('_401_457_Open_Image').style.display='inline'; document.getElementById('_401_457_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">((c</span><span style="color: #000000;">=</span><span style="color: #000000;">in.read(buffer))</span><span style="color: #000000;">!=-</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span><span id="_401_457_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_401_457_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</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;">c;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(buffer[i]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in.close();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</div>
<p>该方法经过测试，支持中文处理，并且可以复制多种类型，比如txt，xml，jpg，doc等多种格式</p>
<p><strong>三.写文件</strong></p>
<p>1.利用PrintStream写文件</p>
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6 0% 50%; padding-bottom: 4px; width: 95%; padding-top: 4px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; border: windowtext 0.5pt solid;">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_0_18_Open_Image" onclick="this.style.display='none'; document.getElementById('_0_18_Open_Text').style.display='none'; document.getElementById('_0_18_Closed_Image').style.display='inline'; document.getElementById('_0_18_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_0_18_Closed_Image" onclick="this.style.display='none'; document.getElementById('_0_18_Closed_Text').style.display='none'; document.getElementById('_0_18_Open_Image').style.display='inline'; document.getElementById('_0_18_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" /><span id="_0_18_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">/**&nbsp;*/</span><span id="_0_18_Open_Text"><span style="color: #008000;">/**</span><span style="color: #008000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;文件输出示例<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_50_289_Open_Image" onclick="this.style.display='none'; document.getElementById('_50_289_Open_Text').style.display='none'; document.getElementById('_50_289_Closed_Image').style.display='inline'; document.getElementById('_50_289_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_50_289_Closed_Image" onclick="this.style.display='none'; document.getElementById('_50_289_Closed_Text').style.display='none'; document.getElementById('_50_289_Open_Image').style.display='inline'; document.getElementById('_50_289_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;PrintStreamDemo()</span><span id="_50_289_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_50_289_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_58_224_Open_Image" onclick="this.style.display='none'; document.getElementById('_58_224_Open_Text').style.display='none'; document.getElementById('_58_224_Closed_Image').style.display='inline'; document.getElementById('_58_224_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_58_224_Closed_Image" onclick="this.style.display='none'; document.getElementById('_58_224_Closed_Text').style.display='none'; document.getElementById('_58_224_Open_Image').style.display='inline'; document.getElementById('_58_224_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;</span><span id="_58_224_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_58_224_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;out</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileOutputStream(</span><span style="color: #000000;">"</span><span style="color: #000000;">D:/test.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStream&nbsp;p</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PrintStream(out);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</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;">10</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">This&nbsp;is&nbsp;</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;">&nbsp;line</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_258_286_Open_Image" onclick="this.style.display='none'; document.getElementById('_258_286_Open_Text').style.display='none'; document.getElementById('_258_286_Closed_Image').style.display='inline'; document.getElementById('_258_286_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_258_286_Closed_Image" onclick="this.style.display='none'; document.getElementById('_258_286_Closed_Text').style.display='none'; document.getElementById('_258_286_Open_Image').style.display='inline'; document.getElementById('_258_286_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(FileNotFoundException&nbsp;e)&nbsp;</span><span id="_258_286_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_258_286_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</div>
<p>2.利用StringBuffer写文件</p>
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6 0% 50%; padding-bottom: 4px; width: 95%; padding-top: 4px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; border: windowtext 0.5pt solid;">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_52_476_Open_Image" onclick="this.style.display='none'; document.getElementById('_52_476_Open_Text').style.display='none'; document.getElementById('_52_476_Closed_Image').style.display='inline'; document.getElementById('_52_476_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_52_476_Closed_Image" onclick="this.style.display='none'; document.getElementById('_52_476_Closed_Text').style.display='none'; document.getElementById('_52_476_Open_Image').style.display='inline'; document.getElementById('_52_476_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" /><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;StringBufferDemo()&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;IOException...</span><span id="_52_476_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_52_476_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(</span><span style="color: #000000;">"</span><span style="color: #000000;">/root/sms.log</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">file.exists())<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.createNewFile();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;out</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileOutputStream(file,</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_265_441_Open_Image" onclick="this.style.display='none'; document.getElementById('_265_441_Open_Text').style.display='none'; document.getElementById('_265_441_Closed_Image').style.display='inline'; document.getElementById('_265_441_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_265_441_Closed_Image" onclick="this.style.display='none'; document.getElementById('_265_441_Closed_Text').style.display='none'; document.getElementById('_265_441_Open_Image').style.display='inline'; document.getElementById('_265_441_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</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;">10000</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)...</span><span id="_265_441_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_265_441_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;sb</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuffer();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(</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;">行:前面介绍的各种方法都不关用,为什么总是奇怪的问题&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(sb.toString().getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">utf-8</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</div>
<p>该方法可以设定使用何种编码，有效解决中文问题。</p>
<p><strong>四.文件重命名</strong></p>
<p>&nbsp;</p>
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6 0% 50%; padding-bottom: 4px; width: 95%; padding-top: 4px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; border: windowtext 0.5pt solid;">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_1_97_Open_Image" onclick="this.style.display='none'; document.getElementById('_1_97_Open_Text').style.display='none'; document.getElementById('_1_97_Closed_Image').style.display='inline'; document.getElementById('_1_97_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_1_97_Closed_Image" onclick="this.style.display='none'; document.getElementById('_1_97_Closed_Text').style.display='none'; document.getElementById('_1_97_Open_Image').style.display='inline'; document.getElementById('_1_97_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1_97_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">/**&nbsp;*/</span><span id="_1_97_Open_Text"><span style="color: #008000;">/**</span><span style="color: #008000;">文件重命名<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;path&nbsp;文件目录<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;oldname&nbsp;&nbsp;原来的文件名<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;newname&nbsp;新文件名<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_168_555_Open_Image" onclick="this.style.display='none'; document.getElementById('_168_555_Open_Text').style.display='none'; document.getElementById('_168_555_Closed_Image').style.display='inline'; document.getElementById('_168_555_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_168_555_Closed_Image" onclick="this.style.display='none'; document.getElementById('_168_555_Closed_Text').style.display='none'; document.getElementById('_168_555_Open_Image').style.display='inline'; document.getElementById('_168_555_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;renameFile(String&nbsp;path,String&nbsp;oldname,String&nbsp;newname)</span><span id="_168_555_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_168_555_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_206_540_Open_Image" onclick="this.style.display='none'; document.getElementById('_206_540_Open_Text').style.display='none'; document.getElementById('_206_540_Closed_Image').style.display='inline'; document.getElementById('_206_540_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_206_540_Closed_Image" onclick="this.style.display='none'; document.getElementById('_206_540_Closed_Text').style.display='none'; document.getElementById('_206_540_Open_Image').style.display='inline'; document.getElementById('_206_540_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">oldname.equals(newname))</span><span id="_206_540_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_206_540_Open_Text"><span style="color: #000000;">{</span><span style="color: #008000;">//</span><span style="color: #008000;">新的文件名和以前文件名不同时,才有必要进行重命名</span><span style="color: #008000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;oldfile</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(path</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;">oldname);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;newfile</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(path</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;">newname);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(newfile.exists())</span><span style="color: #008000;">//</span><span style="color: #008000;">若在该目录下已经有一个文件和新文件名相同，则不允许重命名</span><span style="color: #008000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(newname</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 /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_472_529_Open_Image" onclick="this.style.display='none'; document.getElementById('_472_529_Open_Text').style.display='none'; document.getElementById('_472_529_Closed_Image').style.display='inline'; document.getElementById('_472_529_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_472_529_Closed_Image" onclick="this.style.display='none'; document.getElementById('_472_529_Closed_Text').style.display='none'; document.getElementById('_472_529_Open_Image').style.display='inline'; document.getElementById('_472_529_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span id="_472_529_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_472_529_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldfile.renameTo(newfile);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</div>
<p><span style="font-weight: bold;">五.转移文件目录</span></p>
<p>&nbsp;</p>
<p>转移文件目录不等同于复制文件，复制文件是复制后两个目录都存在该文件，而转移文件目录则是转移后，只有新目录中存在该文件。 </p>
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6 0% 50%; padding-bottom: 4px; width: 95%; padding-top: 4px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; border: windowtext 0.5pt solid;">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_4_178_Open_Image" onclick="this.style.display='none'; document.getElementById('_4_178_Open_Text').style.display='none'; document.getElementById('_4_178_Closed_Image').style.display='inline'; document.getElementById('_4_178_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_4_178_Closed_Image" onclick="this.style.display='none'; document.getElementById('_4_178_Closed_Text').style.display='none'; document.getElementById('_4_178_Open_Image').style.display='inline'; document.getElementById('_4_178_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_4_178_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">/**&nbsp;*/</span><span id="_4_178_Open_Text"><span style="color: #008000;">/**</span><span style="color: #008000;">转移文件目录<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;filename&nbsp;文件名<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;oldpath&nbsp;旧目录<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;newpath&nbsp;新目录<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;cover&nbsp;若新目录下存在和转移文件具有相同文件名的文件时，是否覆盖新目录下文件，cover=true将会覆盖原文件，否则不操作<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_272_685_Open_Image" onclick="this.style.display='none'; document.getElementById('_272_685_Open_Text').style.display='none'; document.getElementById('_272_685_Closed_Image').style.display='inline'; document.getElementById('_272_685_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_272_685_Closed_Image" onclick="this.style.display='none'; document.getElementById('_272_685_Closed_Text').style.display='none'; document.getElementById('_272_685_Open_Image').style.display='inline'; document.getElementById('_272_685_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;changeDirectory(String&nbsp;filename,String&nbsp;oldpath,String&nbsp;newpath,</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">&nbsp;cover)</span><span id="_272_685_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_272_685_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_307_675_Open_Image" onclick="this.style.display='none'; document.getElementById('_307_675_Open_Text').style.display='none'; document.getElementById('_307_675_Closed_Image').style.display='inline'; document.getElementById('_307_675_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_307_675_Closed_Image" onclick="this.style.display='none'; document.getElementById('_307_675_Closed_Text').style.display='none'; document.getElementById('_307_675_Open_Image').style.display='inline'; document.getElementById('_307_675_Open_Text').style.display='inline';" align="top" alt="" style="display: none;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">oldpath.equals(newpath))</span><span id="_307_675_Closed_Text" style="display: none; background-color: #ffffff; border: #808080 1px solid;">...</span><span id="_307_675_Open_Text"><span style="color: #000000;">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;oldfile</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(oldpath</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;">filename);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;newfile</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&n