﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-NeedJava</title><link>http://www.blogjava.net/needjava/</link><description>You Need Java, Like World Need Sun.</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 00:41:18 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 00:41:18 GMT</pubDate><ttl>60</ttl><item><title>〔Java〕〔Swing〕关闭前提醒</title><link>http://www.blogjava.net/needjava/archive/2007/09/17/146007.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Mon, 17 Sep 2007 14:56:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/17/146007.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/146007.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/17/146007.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/146007.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/146007.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">import java.awt.Toolkit;<br />import java.awt.Dimension;<br /><br />import java.awt.event.WindowEvent;<br />import java.awt.event.WindowAdapter;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">import javax.swing.JFrame;<br />import javax.swing.JOptionPane;</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">/*******************************************************************************<br /> *<br /> * 关闭前提醒<br /> *<br /> * Author: NeedJava<br /> *<br /> * Modofied: 2005.04.02<br /> *<br /> ******************************************************************************/<br />class AlarmBeforeClosed extends JFrame<br />{<br />  public AlarmBeforeClosed( String title )<br />  {<br />    //设置程序标题栏<br />    this.setTitle( title );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    //不给最大化<br />    this.setResizable( false );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    //设置程序界面大小<br />    this.setSize( new Dimension( 500, 400 ) );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    //将程序居中放置（方法1）<br />    Dimension paneSize=this.getSize();<br />    Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();<br />    this.setLocation( ( screenSize.width-paneSize.width )/2, ( screenSize.height-paneSize.height )/2 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    //将程序居中放置（方法2）<br />    //this.setLocationRelativeTo( null );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    //设置程序关闭的类型，防止关闭<br />    this.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    //设置关闭程序<br />    this.addWindowListener( new WindowAdapter()<br />    {<br />      public void windowClosing( WindowEvent e )<br />      {<br />        closeApplication();<br />      }<br />    } );<br />  }</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">  /*****************************************************************************<br />   *<br />   * 关闭程序<br />   *<br />   ****************************************************************************/<br />  private void closeApplication()<br />  {<br />    Toolkit.getDefaultToolkit().beep();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    int answer=JOptionPane.showConfirmDialog( AlarmBeforeClosed.this,<br />                                              "您真的要退出此系统？",<br />                                              "退出程序",<br />                                              JOptionPane.YES_NO_OPTION,<br />                                              JOptionPane.QUESTION_MESSAGE,<br />                                              null );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    if( answer==JOptionPane.YES_OPTION )  //选择“是”<br />      {<br />        System.exit( 0 );<br />      }<br />    else if( answer==JOptionPane.NO_OPTION )  //选择“否”<br />           {<br />             return;<br />           }<br />  }</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">  /*****************************************************************************<br />   *<br />   * 入口主程序<br />   *<br />   ****************************************************************************/<br />  public static void main( String[] args )<br />  {<br />    new AlarmBeforeClosed( "关闭前提醒" ).setVisible( true );<br />  }<br />}</font>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/146007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-17 22:56 <a href="http://www.blogjava.net/needjava/archive/2007/09/17/146007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Java〕乘除法和等效的位运算</title><link>http://www.blogjava.net/needjava/archive/2007/09/17/145706.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Mon, 17 Sep 2007 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/17/145706.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145706.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/17/145706.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145706.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145706.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">/*******************************************************************************<br /> *<br /> * 乘除法和等效的位运算<br /> *<br /> * 1024 = 2*2*2*2*2*2*2*2*2*2 = 100 0000 0000<br /> *<br /> ******************************************************************************/<br />class BitOperation<br />{<br />  public static void main( String[] args )<br />  {<br />    //被除数<br />    long dividend=182495073L;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    long temp=0L;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    long begin=0L;</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">    ////////////////////////////////////////////////////////////////////////////<br />    //<br />    // dividend/1024等效于dividend&gt;&gt;10<br />    //<br />    ////////////////////////////////////////////////////////////////////////////<br />    begin=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;10000000; i++ )<br />       {<br />         temp=dividend/1024;<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( temp+" 总共耗时："+( System.currentTimeMillis()-begin )+"毫秒" );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    begin=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;10000000; i++ )<br />       {<br />         temp=dividend&gt;&gt;10;<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( temp+" 总共耗时："+( System.currentTimeMillis()-begin )+"毫秒\r\n" );</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">    ////////////////////////////////////////////////////////////////////////////<br />    //<br />    // dividend*1024等效于dividend&lt;&lt;10<br />    //<br />    ////////////////////////////////////////////////////////////////////////////<br />    begin=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;10000000; i++ )<br />       {<br />         temp=dividend*1024;<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( temp+" 总共耗时："+( System.currentTimeMillis()-begin )+"毫秒" );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    begin=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;10000000; i++ )<br />       {<br />         temp=dividend&lt;&lt;10;<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( temp+" 总共耗时："+( System.currentTimeMillis()-begin )+"毫秒\r\n" );</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">    ////////////////////////////////////////////////////////////////////////////<br />    //<br />    // dividend%1024等效于dividend-( dividend&gt;&gt;10&lt;&lt;10 )<br />    //<br />    ////////////////////////////////////////////////////////////////////////////<br />    begin=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;10000000; i++ )<br />       {<br />         temp=dividend%1024;<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( temp+" 总共耗时："+( System.currentTimeMillis()-begin )+"毫秒" );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    begin=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;10000000; i++ )<br />       {<br />         temp=dividend-( dividend&gt;&gt;10&lt;&lt;10 );<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( temp+" 总共耗时："+( System.currentTimeMillis()-begin )+"毫秒\r\n" );<br />  }<br />}</font>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/145706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-17 09:17 <a href="http://www.blogjava.net/needjava/archive/2007/09/17/145706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Other〕请帮我加个标题</title><link>http://www.blogjava.net/needjava/archive/2007/09/17/145666.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Sun, 16 Sep 2007 18:10:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/17/145666.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145666.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/17/145666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145666.html</trackback:ping><description><![CDATA[每次写的随笔，标题可不可以自动加上我选择的个人分类？不然，我每次看到标题，有时也犯迷糊：“这写的啥玩意这是？”<br /><br />比如某篇随笔的标题是“增加功能”，属于“Java”和“Windows”分类，那么保存后显示的标题是“〔Java〕〔Windows〕增加功能”<br /><br />应该很好处理的，还可以设置括号的样式等等<img src ="http://www.blogjava.net/needjava/aggbug/145666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-17 02:10 <a href="http://www.blogjava.net/needjava/archive/2007/09/17/145666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Java〕用Integer.toString( 1000 )好于1000+""</title><link>http://www.blogjava.net/needjava/archive/2007/09/17/145665.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Sun, 16 Sep 2007 17:23:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/17/145665.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145665.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/17/145665.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145665.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145665.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">我原来把数字变成字符串，使用""+1000，但是经过测试，发现，，，呵呵，你自己测试吧：<br /><br />public final class WhoFaster2<br />{<br />  public static void main( String[] args )<br />  {<br />    long times=1000000L;  //百万</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    long start=0L;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    String temp=null;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    /*/<br />    start=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    temp=null;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;times; i++ )<br />       {<br />         temp=times+"";<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( temp+"　"+( System.currentTimeMillis()-start ) );<br />    /*/<br />    start=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    temp=null;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;times; i++ )<br />       {<br />         temp=Long.toString( times );<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( temp+"　"+( System.currentTimeMillis()-start ) );<br />    //*/<br />  }<br />}</font>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/145665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-17 01:23 <a href="http://www.blogjava.net/needjava/archive/2007/09/17/145665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Java〕看看谁读的快</title><link>http://www.blogjava.net/needjava/archive/2007/09/17/145663.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Sun, 16 Sep 2007 17:02:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/17/145663.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145663.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/17/145663.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145663.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145663.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">刚刚写的看谁复制的快，只是由于在项目中犹豫到底是用哪个好而写的，没想到大家很感兴趣，那我再把读取文件谁快也翻上来，有错尽管拍砖。<br /><br />另外，最好能放在有上万张10KB以上的图片的文件夹下运行，否则不一定看出效果，我的是六千多张，10240轻松取胜。<br /><br />import java.io.File;<br />import java.io.IOException;<br />import java.io.FileInputStream;<br />import java.io.FileNotFoundException;</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">/*******************************************************************************<br /> *<br /> *<br /> * Author: NeedJava<br /> *<br /> * Modified: 2007.08.26<br /> *<br /> ******************************************************************************/<br />public final class ReadFaster<br />{<br />  /*****************************************************************************<br />   *<br />   * 构造函数，默认使用当前路径<br />   *<br />   ****************************************************************************/<br />  public ReadFaster()<br />  {<br />    this( "." );<br />  }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">  public ReadFaster( String fileName )<br />  {<br />    this.listPictures( null, fileName );<br />  }</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">  /*****************************************************************************<br />   *<br />   * 列出当前目录下的文件列表，包括文件和文件夹<br />   *<br />   ****************************************************************************/<br />  private final void listPictures( File path, String fileName )<br />  {<br />    File file=new File( path, fileName );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    if( file.isDirectory() )<br />      {<br />        //得到当前目录下的文件列表，包括文件和文件夹<br />        String[] children=file.list();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">        //如果子集为空，就放弃后面的操作<br />        if( children==null )<br />          {<br />            return;<br />          }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">        //排序<br />        //java.util.Arrays.sort( children );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">        //如果子集不为空，则显示<br />        for( int i=0; i&lt;children.length; i++ )<br />           {<br />             listPictures( file, children[i] );<br />           }<br />      }<br />    else if( file.isFile() )<br />           {<br />             if( isPictureSuffix( file.getPath() ) )<br />               {<br />                 readPicture( file );<br />               }<br />           }<br />  }</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">  /*****************************************************************************<br />   *<br />   * 根据后缀名判断是否是有效的图片，并且返回小写的后缀名<br />   *<br />   ****************************************************************************/<br />  private final boolean isPictureSuffix( String fileName )<br />  {<br />    if( fileName==null )<br />      {<br />        return false;<br />      }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    int length=fileName.length();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    //可能存在“.jpg”这样的文件，即4个字符<br />    if( length&gt;=4 )<br />      {<br />        char c=fileName.charAt( length-4 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">        if( c=='.' )<br />          {<br />            c=fileName.charAt( length-3 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">            if( c=='j'||c=='J' )<br />              {<br />                c=fileName.charAt( length-2 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                if( c=='p'||c=='P' )<br />                  {<br />                    c=fileName.charAt( length-1 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                    if( c=='g'||c=='G' )<br />                      {<br />                        return true;<br />                      }<br />                    else if( c=='e'||c=='E' )<br />                           {<br />                             return true;<br />                           }<br />                  }<br />              }<br />            else if( c=='t'||c=='T' )<br />                   {<br />                     c=fileName.charAt( length-2 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                     if( c=='i'||c=='I' )<br />                       {<br />                         c=fileName.charAt( length-1 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                         if( c=='f'||c=='F' )<br />                           {<br />                             return true;<br />                           }<br />                       }<br />                   }<br />          }<br />        else if( c=='j'||c=='J' )<br />               {<br />                 c=fileName.charAt( length-3 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                 if( c=='p'||c=='P' )<br />                   {<br />                     c=fileName.charAt( length-2 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                     if( c=='e'||c=='E' )<br />                       {<br />                         c=fileName.charAt( length-1 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                         if( c=='g'||c=='G' )<br />                           {<br />                             return true;<br />                           }<br />                       }<br />                   }<br />                 else if( c=='f'||c=='F' )<br />                        {<br />                          c=fileName.charAt( length-2 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                          if( c=='i'||c=='I' )<br />                            {<br />                              c=fileName.charAt( length-1 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                              if( c=='f'||c=='F' )<br />                                {<br />                                  return true;<br />                                }<br />                            }<br />                        }<br />               }<br />        else if( c=='t'||c=='T' )<br />               {<br />                 c=fileName.charAt( length-3 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                 if( c=='i'||c=='I' )<br />                   {<br />                     c=fileName.charAt( length-2 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                     if( c=='f'||c=='F' )<br />                       {<br />                         c=fileName.charAt( length-1 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                         if( c=='f'||c=='F' )<br />                           {<br />                             return true;<br />                           }<br />                       }<br />                   }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">               }<br />      }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    return false;<br />  }</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">  /*****************************************************************************<br />   *<br />   * 大于10240的，每次读1024或2048<br />   *<br />   * 小于10240的，读10240一次即可<br />   *<br />   ****************************************************************************/<br />  private final String readPicture( File file )<br />  {<br />    try{ FileInputStream fis=new FileInputStream( file );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         //小于10K的忽略<br />         if( fis.available()&lt;10240 )<br />           {<br />             return "";<br />           }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         long num=0L;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         //Buffered的默认有2048和8192</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         //*/ No.1<br />         byte[] buffer=new byte[10240];</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         if( fis.read( buffer )==10240 )<br />           {<br />             for( int i=0; i&lt;10240; i++ )<br />                {<br />                  num++;<br />                }<br />           }<br />         //*/</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         /*/ No.3<br />         byte[] buffer=new byte[5120];</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         for( int j=0; j&lt;2; j++ )<br />            {<br />              if( fis.read( buffer )==5120 )<br />                {<br />                  for( int i=0; i&lt;5120; i++ )<br />                     {<br />                       num++;<br />                     }<br />                }<br />            }<br />         //*/</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         /*/ No.2<br />         byte[] buffer=new byte[2048];</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         for( int j=0; j&lt;5; j++ )<br />            {<br />              if( fis.read( buffer )==2048 )<br />                {<br />                  for( int i=0; i&lt;2048; i++ )<br />                     {<br />                       num++;<br />                     }<br />                }<br />            }<br />         //*/</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         /*/ No.4<br />         byte[] buffer=new byte[1024];</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         for( int j=0; j&lt;10; j++ )<br />            {<br />              if( fis.read( buffer )==1024 )<br />                {<br />                  for( int i=0; i&lt;1024; i++ )<br />                     {<br />                       num++;<br />                     }<br />                }<br />            }<br />         //*/</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         fis.close();<br />       }<br />     catch( FileNotFoundException fnfe )<br />          {<br />            fnfe.printStackTrace();<br />          }<br />     catch( IOException ioe )<br />          {<br />            ioe.printStackTrace();<br />          }<br />     catch( Exception e )<br />          {<br />            e.printStackTrace();<br />          }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">     return "";<br />  }</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">  /*****************************************************************************<br />   *<br />   * 主函数入口<br />   *<br />   ****************************************************************************/<br />  public static void main( String[] args )<br />  {<br />    try{ long begin=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         ReadFaster rf=new ReadFaster();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         System.out.println( "总共耗时："+( System.currentTimeMillis()-begin )+"毫秒\r\n" );<br />       }<br />    catch( Exception e )<br />         {<br />           e.printStackTrace();<br />         }<br />  }<br />}</font>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/145663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-17 01:02 <a href="http://www.blogjava.net/needjava/archive/2007/09/17/145663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Java〕中文变量</title><link>http://www.blogjava.net/needjava/archive/2007/09/16/145636.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Sun, 16 Sep 2007 13:42:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/16/145636.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145636.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/16/145636.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145636.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145636.html</trackback:ping><description><![CDATA[
		<font face="Courier New">
				<font size="2">
						<font color="#808080">public class 终结者<br />{<br />  public static void main( String[] args )<br />  {<br />    for( int 终结者=1; 终结者&lt;=100; 终结者++ )<br />       {<br />         System.out.println( 终结者 );<br />       }<br />  }<br />} <br /><br /></font>
						<font color="#808080">注意，不是所有的中文都支持。 <br /><br />你是不是想到了混淆？？？这可不是易语言，呵呵。<br /><br /></font>
				</font>
		</font>
<img src ="http://www.blogjava.net/needjava/aggbug/145636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-16 21:42 <a href="http://www.blogjava.net/needjava/archive/2007/09/16/145636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Java〕比较赋值与System.arraycopy谁快</title><link>http://www.blogjava.net/needjava/archive/2007/09/16/145513.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Sun, 16 Sep 2007 05:42:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/16/145513.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145513.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/16/145513.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145513.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145513.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">/*******************************************************************************<br /> *<br /> * 比较赋值与System.arraycopy谁快<br /> *<br /> * 复制的内容越多，System.arraycopy优势更明显<br /> *<br /> * Author: NeedJava<br /> *<br /> * Modified: 2007.09.16<br /> *<br /> ******************************************************************************/<br />public final class WhoFaster<br />{<br />  public static void main( String[] args )<br />  {<br />    /*/<br />    int begin=100;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    int length=12;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    String temp="12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890";</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    int times=10000000;  //千万<br />    /*/<br />    int begin=100;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    int length=120;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    String temp="12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"黑客帝国忍者神龟变形金刚"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890"<br />               +"12345678901234567890";</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    int times=1000000;  //百万<br />    //*/</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    char[] oldArray=temp.toCharArray();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    char[] newArray=null;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    long start=0L;</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">    ////////////////////////////////////////////////////////////////////////////<br />    //<br />    // 单纯赋值<br />    //<br />    ////////////////////////////////////////////////////////////////////////////<br />    newArray=new char[length];</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    start=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;times; i++ )<br />       {<br />         for( int j=0; j&lt;length; j++ )<br />            {<br />              newArray[j]=oldArray[begin+j];<br />            }<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( new String( newArray )+"　"+( System.currentTimeMillis()-start ) );</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">    ////////////////////////////////////////////////////////////////////////////<br />    //<br />    // System.arraycopy<br />    //<br />    ////////////////////////////////////////////////////////////////////////////<br />    newArray=new char[length];</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    start=System.currentTimeMillis();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;times; i++ )<br />       {<br />         System.arraycopy( oldArray, begin, newArray, 0, length );<br />       }</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    System.out.println( new String( newArray )+"　"+( System.currentTimeMillis()-start ) );<br />  }<br />}</font>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/145513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-16 13:42 <a href="http://www.blogjava.net/needjava/archive/2007/09/16/145513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Finance〕存款准备金</title><link>http://www.blogjava.net/needjava/archive/2007/09/15/145277.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Fri, 14 Sep 2007 16:54:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/15/145277.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145277.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/15/145277.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145277.html</trackback:ping><description><![CDATA[
		<p>
				<span style="FONT-SIZE: 14pt; FONT-FAMILY: 仿宋_GB2312; mso-font-kerning: 1.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<font face="Tahoma" color="#808080" size="3">存款准备金是指金融机构为保证客户提取存款和资金清算需要而准备的在中央银行的存款。中央银行要求的存款准备金占其存款总额的比例就是存款准备金率。 </font>
				</span>
		</p>
		<p>
				<span style="FONT-SIZE: 14pt; FONT-FAMILY: 仿宋_GB2312; mso-font-kerning: 1.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<font face="Tahoma" color="#808080" size="3">中央银行通过调整存款准备金率，可以影响金融机构的信贷扩张能力，从而间接调控货币供应量。存款准备金占金融机构存款总额的比例则叫做存款准备金率。 </font>
				</span>
		</p>
		<p>
				<span style="FONT-SIZE: 14pt; FONT-FAMILY: 仿宋_GB2312; mso-font-kerning: 1.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<font face="Tahoma" color="#808080" size="3">打比方说，如果存款准备金率为１０％，就意味着金融机构每吸收１０００万元存款，要向央行缴存１００万元的存款准备金，用于发放贷款的资金为９００万元。如果将存款准备金率提高到２０％，那么金融机构的可贷资金将减少到８００万元。 </font>
				</span>
		</p>
		<p>
				<span style="FONT-SIZE: 14pt; FONT-FAMILY: 仿宋_GB2312; mso-font-kerning: 1.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<font face="Tahoma" color="#808080" size="3">在存款准备金制度下，金融机构不能将其吸收的存款全部用于发放贷款，必须保留一定的资金即存款准备金，以备客户提款的需要，因此存款准备金制度有利于保证金融机构对客户的正常支付。</font>
				</span>
		</p>
		<p>
				<span style="FONT-SIZE: 14pt; FONT-FAMILY: 仿宋_GB2312; mso-font-kerning: 1.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<font face="Tahoma" color="#808080" size="3">打个比方，不太恰当，我没谈ＧＦ前，老妈（中央银行）为了控制我（国内其他银行或合法存贷款机构）的花费，决定每月按照我当月的工资向她上缴一定比例的钱，这个比例就是存款准备金率，这部分钱就是存款准备金，这部分上缴的钱我是可以随时申请使用的，但必须用后补全。但是我哥们多，借钱也多，我又好施舍（贷款），结果一些人借了钱不还，老妈得知非常生气，决定提高上缴比例（上调存款准备金率），这样我每月可供使用的钱就少了，我借钱的时候就得认真考虑了：这小子还欠我钱（信用评审），不能借；那小子找我借钱赌博（风险项目投资），风险大，不能借；另外这个小子有东西存我这（抵押或质押），我不怕他欠钱，借给他。</font>
				</span>
		</p>
		<p>
				<span style="FONT-SIZE: 14pt; FONT-FAMILY: 仿宋_GB2312; mso-font-kerning: 1.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<font face="Tahoma" color="#808080" size="3">这次央行上调存款准备金率和贷款利息，均是为了减少过度贷款，减少资金流动过快，以及通货膨胀，其实我感觉像是在打压股市的过度投资，说不定财政部过段时间又要有措施了，五月份他们刚调整的印花税，这次不知道他们又有何举动？</font>
				</span>
		</p>
		<p>
				<span style="FONT-SIZE: 14pt; FONT-FAMILY: 仿宋_GB2312; mso-font-kerning: 1.0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<font face="Tahoma" color="#808080" size="3">央行行长周小川现在最想唱的歌就是：你（钱）快回来，我的手心一直在冒汗，你（钱）快回来，银行依你而存在。<br /></font>
				</span>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/145277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-15 00:54 <a href="http://www.blogjava.net/needjava/archive/2007/09/15/145277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔English〕脱口而出的习惯语</title><link>http://www.blogjava.net/needjava/archive/2007/09/15/145272.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Fri, 14 Sep 2007 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/15/145272.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145272.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/15/145272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145272.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145272.html</trackback:ping><description><![CDATA[
		<div style="MARGIN-BOTTOM: 10px">
				<h4 class="mode_title" id="veryTitle">
						<font face="Courier New" color="#808080" size="2">小事一桩 <br />That's a piece of cake.<br />That's as easy as pie! <br />I can do it with my eyes closed.<br /><br /><br />请你客气点<br />Who do you think you're talking to?<br />Don't get fresh with me.（get fresh with大多用于母亲对孩子的斥责之时）<br /><br /><br />等着瞧<br />You'll see.<br />Time will tell.<br /><br /><br />多管闲事<br />(It is) None of your business.<br />Mind your own business.<br />Who asked you?<br />This has nothing to do with you.<br /><br /><br />别狗眼看人低<br />Do I look like a fool?<br />Who do you think I am?<br />What kind of a fool do you take me for?<br /><br /><br />不要告诉别人<br />Don't tell anybody (about it).<br />This is just between you and me.<br />This doesn't leave this room.<br />This is for your ears only.<br /><br /><br />当然<br />You bet.<br />You know it.<br />You betcha.<br /><br /><br />你在开玩笑<br />You are kidding(joking).<br />You have got to be kidding(joking).<br />Are you kidding(joking).<br /><br /><br />没错，就是这样<br />You got that right.<br />You wit the rail on the head.<br /><br /><br />世界真小<br />It is a small world.<br />Small world!<br />You never know whom you will bump into.<br /><br /><br />既然如此，你自己来吧<br />Do it yourself, then<br /><br /><br />这才像话<br />That is more like it.<br /><br /><br />太过分了<br />That is going too far.<br /><br /><br />我老早就告诉过你了<br />See I told you (so).<br /><br /><br />那又怎样？<br />So what?<br /><br /><br />就指望你了<br />I'm counting on you.<br />You're my only hope.<br /><br /><br />想想办法吧！（别老是坐在那里）<br />Do something (about it).<br />Don't just sit there.<br /><br /><br />别装傻了<br />Stop playing the fool.<br />Don't act stupid.<br /><br /><br />你有何不满？<br />Any complaints?<br />Do you have anything to say?<br /><br /><br />船到桥头自然直 <br />Thing will work out.<br />It will work out.<br />Everything will be fine.<br /><br /><br />（小辫子）被抓到了<br />You caught me.<br /><br /><br />我早就知道了<br />I'm fully(well) aware of that.<br />You don't have to tell me.<br />I wasn't born yesterday.<br /><br /><br />我认输了 <br />Beats me.<br />You got me.<br />You got that right.<br />I can't hack this.（hack 是完成任务的俗语）<br /><br /><br />你到底要说什么？<br />Don't beat around the bush?<br />Get to the point?<br />What are you try to say?<br /><br /><br />你以为你是谁？<br />Who do you think you are?<br /></font>
				</h4>
		</div>
		<div style="POSITION: relative">
				<font face="Courier New" color="#808080" size="2">
				</font> </div>
<img src ="http://www.blogjava.net/needjava/aggbug/145272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-15 00:21 <a href="http://www.blogjava.net/needjava/archive/2007/09/15/145272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Movie〕兄弟连　德国战败　德国将军对士兵的话</title><link>http://www.blogjava.net/needjava/archive/2007/09/15/145270.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Fri, 14 Sep 2007 16:09:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/15/145270.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145270.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/15/145270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145270.html</trackback:ping><description><![CDATA[
		<div style="MARGIN-BOTTOM: 10px">
				<h4 class="mode_title" id="veryTitle">
						<font color="#a9a9a9">
								<font size="5">
										<font face="楷体_GB2312">这是一场漫长的战争，也是一场艰苦的战争。<br /><br />你们英勇并骄傲地为祖国而战。<br /><br />你们是不平凡的一群，彼此紧密相连。<br /><br />这种情谊只存在于战斗中。<br /><br />在兄弟之间，共同使用散兵坑；在最需要的时候，彼此扶持。<br /><br />你们看过死亡，一起经历磨难。<br /><br />我很高兴能与你们每个人共同服役。<br /><br />你们有权享受永远快乐的和平生活!<wbr><wbr><wbr></wbr></wbr></wbr></font> <br /></font>
						</font>
				</h4>
		</div>
		<div style="POSITION: relative">
				<font color="#a9a9a9" size="4">
				</font> </div>
<img src ="http://www.blogjava.net/needjava/aggbug/145270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-15 00:09 <a href="http://www.blogjava.net/needjava/archive/2007/09/15/145270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Java〕对数字或文件名排列</title><link>http://www.blogjava.net/needjava/archive/2007/09/14/145003.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Thu, 13 Sep 2007 16:17:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/14/145003.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/145003.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/14/145003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/145003.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/145003.html</trackback:ping><description><![CDATA[
		<div width="1200">
				<p>
						<font face="Courier New" color="#808080" size="2">/*******************************************************************************<br /> *<br /> * 对数字或文件名排列<br /> *<br /> * 没有考虑汉字显示时占两个位置的情况，即对文件名处理不太好<br /> *<br /> * Author: NeedJava<br /> *<br /> * Modified: 2007.09.09<br /> *<br /> ******************************************************************************/</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">public final class DotAlign<br />{<br />  private DotAlign(){}</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">  private static final String align( String string,<br />                                     char prefix,<br />                                     char suffix,<br />                                     int prefixLength,<br />                                     int suffixLength,<br />                                     boolean isNumber )<br />  {<br />    if( string==null||string.equals( "" )||string.equals( "." )||prefixLength&lt;0||suffixLength&lt;0 )<br />      {<br />        return string;<br />      }</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    //如果没有小数，那么按照常理，小数点也应该省略<br />    char[] buffer=new char[( suffixLength&gt;0 ? prefixLength+1+suffixLength : prefixLength )];</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    int stringLength=string.length();</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    int dot=stringLength-1;</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    //找到小数点位置，可以用lastIndexOf()代替<br />    while( dot&gt;-1 )<br />         {<br />           if( string.charAt( dot-- )=='.' )<br />             {<br />               dot++;</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">               break;<br />             }<br />         }</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    //System.out.print( Integer.toString( dot )+"\t" );</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    //★整数部分，从小数点左位向左移<br />    int pointer=( dot&gt;-1 ? dot-1 : stringLength-1 );</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    for( int i=prefixLength-1; i&gt;-1; i-- )<br />       {<br />         if( pointer&gt;-1 )<br />           {<br />             buffer[i]=string.charAt( pointer-- );<br />           }<br />         else{ buffer[i]=prefix;<br />             }<br />       }</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    //如果没有小数部分，那么按照常理，小数点应该省略<br />    if( suffixLength&gt;0 )<br />      {<br />        //★小数点<br />        buffer[prefixLength]=( dot&gt;-1||isNumber ? '.' : suffix );</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">        //★小数部分，从小数点右位向右移<br />        pointer=( dot&gt;-1 ? dot+1 : stringLength );</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">        for( int i=prefixLength+1; i&lt;buffer.length; i++ )<br />           {<br />             if( pointer&lt;stringLength )<br />               {<br />                 buffer[i]=string.charAt( pointer++ );<br />               }<br />             else{ buffer[i]=suffix;<br />                 }<br />           }<br />      }</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    return new String( buffer );<br />  }</font>
				</p>
				<p>
						<br />
						<font face="Courier New" color="#808080" size="2">  public final static void main( String[] args )<br />  {<br />    System.out.println( "\r\n-------------------------------------------\r\n" );</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    String[] number={ "",<br />                      ".",<br />                      ".5",<br />                      ".56",<br />                      ".567",<br />                      ".5678",<br />                      "1234",<br />                      "1234.",<br />                      "1234.5",<br />                      "1234.56",<br />                      "1234.567",<br />                      "1234.5678" };</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;number.length; i++ )<br />       {<br />         System.out.println( "["+DotAlign.align( number[i], ' ', '0', 7, 2, true )+"]   ["+number[i]+"]" );<br />       }</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    System.out.println( "\r\n-------------------------------------------\r\n" );</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    String[] file={ "",<br />                    ".",<br />                    ".j",<br />                    ".jp",<br />                    ".jpe",<br />                    ".jpeg",<br />                    "1234",<br />                    "1234.",<br />                    "1234.j",<br />                    "1234.jp",<br />                    "1234.jpe",<br />                    "1234.jpeg" };</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    for( int i=0; i&lt;file.length; i++ )<br />       {<br />         System.out.println( "["+DotAlign.align( file[i], ' ', ' ', 7, 5, false )+"]   ["+file[i]+"]" );<br />       }</font>
				</p>
				<p>
						<font face="Courier New" color="#808080" size="2">    System.out.println( "\r\n-------------------------------------------\r\n" );<br />  }<br />}</font>
				</p>
		</div>
<img src ="http://www.blogjava.net/needjava/aggbug/145003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-14 00:17 <a href="http://www.blogjava.net/needjava/archive/2007/09/14/145003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Other〕Blog新地址</title><link>http://www.blogjava.net/needjava/archive/2007/09/10/143973.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Mon, 10 Sep 2007 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/10/143973.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/143973.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/10/143973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/143973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/143973.html</trackback:ping><description><![CDATA[
		<div style="MARGIN-BOTTOM: 10px">
				<h4 class="mode_title" id="veryTitle">
						<div style="POSITION: relative">
								<a href="http://blog.csdn.net/needjava" target="_blank">
										<font face="Courier New" size="2">http://blog.csdn.net/needjava</font>
								</a>
								<wbr>
										<font face="Courier New" size="2">  主<br /><br /></font>
										<a href="/needjava" target="_blank">
												<font face="Courier New" size="2">http://www.blogjava.net/needjava</font>
										</a>
										<wbr>
												<font face="Courier New" size="2">  辅<br /></font>
										</wbr>
								</wbr>
						</div>
				</h4>
		</div>
		<div style="POSITION: relative">
				<font face="Courier New" size="2">
				</font> </div>
<img src ="http://www.blogjava.net/needjava/aggbug/143973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-10 14:06 <a href="http://www.blogjava.net/needjava/archive/2007/09/10/143973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Windows〕不能重命名的Program Files和Windows文件夹</title><link>http://www.blogjava.net/needjava/archive/2007/09/03/142274.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Mon, 03 Sep 2007 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/03/142274.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/142274.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/03/142274.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/142274.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/142274.html</trackback:ping><description><![CDATA[
		<font face="Courier New" size="2">今天无意中想复制Program Files文件夹的名称，一般单击就可以进去了，但今天发现咚咚直响，右键也没有“重命名”选项，不知道是不是微软的安全漏洞让微软封了此文件夹？还是我一直没发现？</font>
<img src ="http://www.blogjava.net/needjava/aggbug/142274.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-03 13:28 <a href="http://www.blogjava.net/needjava/archive/2007/09/03/142274.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Java〕〔SWT〕分析RSSOwl如何做到只运行一个实例，并且可以激活</title><link>http://www.blogjava.net/needjava/archive/2007/09/01/141959.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Sat, 01 Sep 2007 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/09/01/141959.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/141959.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/09/01/141959.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/141959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/141959.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">前几天自己发表的只运行一个实例的文章，感谢Pande的留意，并提出宝贵意见，他推荐的正好是我想找的RSSOwl源码，以下是我分析RSSOwl如何做到只运行一个实例并且激活的，如有错误，请拍砖。<br /></font>
				<a href="http://sourceforge.krugle.com/kse/files/cvs/cvs.sourceforge.net/rssowl/RSSOwl/src/java/net/sourceforge/rssowl/controller/RSSOwlLoader.java">
						<br />
				</a>
		</p>
		<p>
				<a href="http://sourceforge.krugle.com/kse/files/cvs/cvs.sourceforge.net/rssowl/RSSOwl/src/java/net/sourceforge/rssowl/controller/RSSOwlLoader.java">
						<font face="Courier New" color="#808080" size="2">http://sourceforge.krugle.com/kse/files/cvs/cvs.sourceforge.net/rssowl/RSSOwl/src/java/net/sourceforge/rssowl/controller/RSSOwlLoader.java</font>
				</a>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">根据 RSSOwlLoader.java 中的</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">[code]<br />private static void startupProcess( String[] args )<br />{ <br />  ...</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">  if( !System.getProperties().containsKey( PROPERTY_ALLOW_MULTI_INSTANCES )&amp;&amp;<font color="#ff0000">StartupManager.isRSSOwlRunning( feedArgument )</font> )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">  ...</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">}<br />[/code]</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">追踪到 StartupManager.java 见下：</font>
		</p>
		<p>
				<a href="http://sourceforge.krugle.com/kse/files/cvs/cvs.sourceforge.net/rssowl/RSSOwl/src/java/net/sourceforge/rssowl/controller/thread/StartupManager.java">
						<font face="Courier New" color="#808080" size="2">http://sourceforge.krugle.com/kse/files/cvs/cvs.sourceforge.net/rssowl/RSSOwl/src/java/net/sourceforge/rssowl/controller/thread/StartupManager.java</font>
				</a>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">追踪到 StartupManager.isRSSOwlRunning( String message ) 用途为建立ServerSocket，监听本地8794端口</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">[code]<br />static ServerSocket applLockSocket;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">public static boolean isRSSOwlRunning( String message )<br />{ </font>
		</p>
		<p>
				<font face="Courier New" color="#ff0000" size="2">  try{ applLockSocket=new ServerSocket( 8794, 50, InetAddress.getByName( "127.0.0.1" ) );  //1987年9月4日出生？</font>
		</p>
		<p>
				<font face="Courier New" color="#ff0000" size="2">       handleSocketUnBound();  //</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">
						<font color="#ff0000">       return false;<br /></font>     } <br />  catch( java.net.BindException e )    //Another instance already running<br />       { <br />         ...</font>
		</p>
		<p>
				<font face="Courier New" color="#ff0000" size="2">         handleSocketBound( message );  //</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">
						<font color="#ff0000">         return true;<br /></font>       }  <br />  catch( IOException e )  //Other Error<br />       { <br />         ...</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">         return false;<br />       }<br />} <br />[/code]</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">追踪到 StartupManager.handleSocketUnBound() 和 StartupManager.handleSocketBound( String message )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">[code]<br />private static void handleSocketBound( String message )<br />{<br />  Socket socket;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">  try{ socket=new Socket( InetAddress.getByName( "127.0.0.1" ), 8794 );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">       PrintWriter writer=new PrintWriter( new OutputStreamWriter( socket.getOutputStream() ) );</font>
		</p>
		<p>
				<font face="Courier New" color="#ff0000" size="2">       writer.println( ( message!=null&amp;&amp;message.length()&gt;0 ) ? message : DEFAULT_MESSAGE );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">       writer.flush();<br />     }<br />  catch( UnknownHostException e )<br />       {<br />         ...<br />       }<br />  catch( IOException e )<br />       {<br />         ...<br />       }<br />}<br />[/code]<br /><br />[code]<br /></font>
				<font face="Courier New" color="#808080" size="2">/**<br /> * Server not yet running. Start it and listen for incoming messages.<br /> */<br />private static void handleSocketUnBound()<br />{<br />  listen();  //转向，为了对称好看？还是为了兼容？<br />}<br /><br /></font>
				<font face="Courier New" color="#808080" size="2">/**<br /> * Listen for incoming messages.看看接受的连接发送了什么内容<br /> */<br />private static void listen()<br />{<br />  //Run the Server inside a Thread<br />  server=new ExtendedThread()  //extends from Thread<br />  {<br />    public void run()<br />    {<br />      while( !isStopped()&amp;&amp;!isInterrupted() )<br />           {<br />             BufferedReader buffReader=null;</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">             try{ //Read a single line from the Socket<br />                  Socket socket=applLockSocket.accept();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                  buffReader=new BufferedReader( new InputStreamReader( socket.getInputStream() ) );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                  final String message=buffReader.readLine();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                  socket.close();</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                  //Check the received message<br /><font color="#ff0000">                  if( ( message!=null&amp;&amp;message.length()&gt;0 )&amp;&amp;GUI.display!=null&amp;&amp;!GUI.display.isDisposed() )  //激活某个GUI的代码在此，我们进去看看<br /></font>                    {<br />                      GUI.display.asyncExec( new Runnable()<br />                      {<br />                        public void run()<br />                        {<br />                          //Restore the RSSOwl Window and handle Message<br />                          if( GUI.isAlive() )<br />                            {<br /><font color="#ff0000">                              GUI.rssOwlGui.restoreWindow();  //找到了，转到GUI.java</font></font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                              //Handle the message as Link if valid argument<br />                              if( RSSOwlLoader.isValidArgument( message ) )<br />                                {<br />                                  GUI.rssOwlGui.getEventManager().actionHandleSuppliedLink( message );<br />                                }<br />                            }<br />                        }<br />                      } );<br />                    }<br />                }<br />             catch( IOException e )<br />                  {<br />                    ...<br />                  }<br />             finally{ //关闭流<br />                    }<br />           }<br />    }<br />  };</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">  server.setDaemon( true );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">  server.setName( "Startup Manager Thread" );</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">  server.start();<br />}<br />[/code]</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">追踪到 GUI.java 见下：</font>
		</p>
		<p>
				<a href="http://sourceforge.krugle.com/kse/files/cvs/cvs.sourceforge.net/rssowl/RSSOwl/src/java/net/sourceforge/rssowl/controller/GUI.java">
						<font face="Courier New" color="#808080" size="2">http://sourceforge.krugle.com/kse/files/cvs/cvs.sourceforge.net/rssowl/RSSOwl/src/java/net/sourceforge/rssowl/controller/GUI.java</font>
				</a>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">追踪到GUI.restoreWindow()</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">[code]<br />/**<br /> * Restore the application window either from taskbar or the tray.<br /> */<br />public void restoreWindow()<br />{<br />  //RSSOwl is minimized to Tray<br />  if( GlobalSettings.useSystemTray()&amp;&amp;rssOwlSystray!=null&amp;&amp;rssOwlSystray.isMinimizedToTray() )<br />    {<br />      rssOwlSystray.restoreWindow();<br />    }<br />  else{ //RSSOwl is not active<br /><font color="#ff0000">        shell.forceActive();  //就是它了</font></font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">        shell.setMinimized( false );<br />      }<br />}<br />[/code]</font>
		</p>
		<p>
				<font size="2">
						<font face="Courier New" color="#808080">原理如下： <br /><br /><font color="#808080">在本地8794端口建立服务监听，并且一直监听此端口，试图接受此端口其它实例（其它程序？）发送的输入 <br /><br />如果读到数据（好像没有判断数据的合法性，仅仅判断数据不为空），并且自己不是“激活”状态，就“激活”自己； <br /><br />如果建立服务监听不成功，说明已经有实例（其它程序？）占用此端口了，向此端口发送数据唤醒前一个实例，停几秒以便前一个实例接受，然后退出。 <br /><br />程序用的是SWT，激活方法用的是shell.forceActive()，but it's not good for core java. <br /><br />以上分析如有不对，恳请斧正。</font></font>
						<font color="#808080">
						</font>
				</font>
		</p>
		<p>
				<br />
				<br />
				<font face="Courier New" color="#808080" size="2">  </font>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/141959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-09-01 17:03 <a href="http://www.blogjava.net/needjava/archive/2007/09/01/141959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Love〕我的外甥女会喊妈妈了</title><link>http://www.blogjava.net/needjava/archive/2007/08/29/141117.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Wed, 29 Aug 2007 14:49:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/08/29/141117.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/141117.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/08/29/141117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/141117.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/141117.html</trackback:ping><description><![CDATA[
		<font face="Courier New" color="#808080" size="2">2007年08月28日，很吉利的日子，我的外甥女终于会喊妈妈了，呵呵，可爱的小宝宝，亲一个先。<br /><br />不过，不知道她什么时候喊我舅舅啊？:)</font>
<img src ="http://www.blogjava.net/needjava/aggbug/141117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-08-29 22:49 <a href="http://www.blogjava.net/needjava/archive/2007/08/29/141117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔Java〕只运行一个实例（使用System.setErr()重定向）</title><link>http://www.blogjava.net/needjava/archive/2007/08/29/141106.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Wed, 29 Aug 2007 14:11:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/08/29/141106.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/141106.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/08/29/141106.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/141106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/141106.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New">
						<font color="#808080" size="2">如何只运行一个实例，网上有三种方法（单模式不算）：<br /><br />1、占用端口（有效，但是有端口被挪用的缺陷）<br /><br />2、检查文件是否存在（有效，但突然停机可能有问题）<br /><br />3、使用JNI（有效，但丧失可移植性）<br /><br />我写的和第二个原理差不多，判断某个文件是否被占用，并且我把记录日志、保存日志、判断是否运行放在一起。<br /><br />你可以转载本Blog，但是不能篡改作者名称。<br /></font>
				</font>
				<font face="Courier New">
						<font color="#808080" size="2">
								<br />import java.awt.event.WindowEvent;<br />import java.awt.event.WindowAdapter;</font>
				</font>
		</p>
		<p>
				<font face="Courier New">
						<font color="#808080" size="2">import java.io.File;<br />import java.io.IOException;<br />import java.io.PrintStream;<br />import java.io.FileOutputStream;<br />import java.io.FileNotFoundException;</font>
				</font>
		</p>
		<p>
				<font face="Courier New">
						<font color="#808080" size="2">import javax.swing.JFrame;</font>
				</font>
		</p>
		<font face="Courier New">
				<font color="#808080" size="2">
						<p>
								<br />/*******************************************************************************<br /> *<br /> * 只运行一个实例<br /> *<br /> * Just single instance<br /> *<br /> *<br /> * Author: NeedJava<br /> *<br /> * Modified: 2007.08.29<br /> *<br /> *<br /> * 你可以使用此程序于任何地方，但请保留程序作者及注释的完整。如果你改进了程序，<br /> *<br /> * 请在原作者后添加姓名，如：Author: NeedJava/Jack/Mike，版本及修改时间同理。<br /> *<br /> ******************************************************************************/<br />public final class SingleInstance<br />{<br />  /*****************************************************************************<br />   *<br />   * 构造函数<br />   *<br />   ****************************************************************************/<br />  private SingleInstance()<br />  {<br />    this( "vab", ".vab", "vab" );<br />  }</p>
						<p>
								<br />  public SingleInstance( String filePrefixName, String fileSuffixName, String directoryName )<br />  {<br />    this.init( filePrefixName, fileSuffixName, directoryName );<br />  }</p>
						<p>
								<br />  /*****************************************************************************<br />   *<br />   * 原理：<br />   *<br />   * 用重定向将标准错误输出流定向到一个日志文件，占用它，使其不能被删除<br />   *<br />   * 以后的实例试图将存在的此日志文件改名并且另存为某个文件夹下<br />   *<br />   * 如果成功，说明没有程序占用它（不排除你在用它，缺陷？），正好保存日志<br />   *<br />   * 如果不成功，退出、renameTo命令有一箭双雕的作用<br />   *<br />   ****************************************************************************/<br />  private final void init( String filePrefixName, String fileSuffixName, String directoryName )<br />  {<br />    if( filePrefixName==null||fileSuffixName==null||directoryName==null )<br />      {<br />        exitWithWarning( "Error: Invalid file name.", 10 );<br />      }</p>
						<p>    //We need check the fileSuffixName here? From the tail?</p>
						<p>    String fileName=filePrefixName+fileSuffixName;</p>
						<p>    try{ File error=new File( fileName );</p>
						<p>         if( error.exists() )<br />           {<br />             File directory=new File( directoryName );</p>
						<p>             String newFileName=directoryName+File.separator+convertMillisecond2DateTime( error.lastModified() )+fileSuffixName;</p>
						<p>             //System.out.println( newFileName );</p>
						<p>             if( directory.exists() )<br />               {<br />                 if( directory.isDirectory() )<br />                   {<br />                     //renameTo也是好东东，既可以改名，还可以移文件<br />                     if( !error.renameTo( new File( newFileName ) ) )<br />                       {<br />                         exitWithWarning( "Error: The instance already exists, I will exit.", 11 );<br />                       }<br />                   }<br />                 else{ exitWithWarning( "Error: The \'"+directoryName+"\' is not a valid directory.", 21 );<br />                     }<br />               }<br />             else{ if( directory.mkdirs() )<br />                     {<br />                       //renameTo也是好东东，既可以改名，还可以移文件<br />                       if( !error.renameTo( new File( newFileName ) ) )<br />                         {<br />                           exitWithWarning( "Error: The instance already exists, I will exit.", 11 );<br />                         }<br />                     }<br />                   else{ exitWithWarning( "Error: Failed to create the \'"+directoryName+"\' directory.", 22 );<br />                       }<br />                 }<br />           }</p>
						<p>         //重定向标准错误输出流，所有功能全靠它。来，啵一个<br />         System.setErr( new PrintStream( new FileOutputStream( fileName ) ) );<br />       }<br />    catch( FileNotFoundException fnfe )<br />         {<br />           //fnfe.printStackTrace();</p>
						<p>           exitWithWarning( fnfe.toString(), 23 );<br />         }<br />    catch( IOException ioe )<br />         {<br />           //ioe.printStackTrace();</p>
						<p>           exitWithWarning( ioe.toString(), 29 );<br />         }<br />    catch( Exception e )<br />         {<br />           //e.printStackTrace();</p>
						<p>           exitWithWarning( e.toString(), 99 );<br />         }<br />  }</p>
						<p>
								<br />  /*****************************************************************************<br />   *<br />   * You can change the milliseconds to the date and time string here<br />   *<br />   * I just return the original<br />   *<br />   * Don't get the same string :)<br />   *<br />   ****************************************************************************/<br />  private final String convertMillisecond2DateTime( long millisecond )<br />  {<br />    return ""+millisecond;<br />  }</p>
						<p>
								<br />  /*****************************************************************************<br />   *<br />   * Return the warning and the exit code, then exit the application<br />   *<br />   ****************************************************************************/<br />  private final void exitWithWarning( String warning, int code )<br />  {<br />    System.out.println( warning==null ? "" : warning );</p>
						<p>    System.exit( code );<br />  }</p>
						<p>
								<br />  /*****************************************************************************<br />   *<br />   * 主函数入口<br />   *<br />   ****************************************************************************/<br />  public final static void main( String[] args )<br />  {<br />    SingleInstance si=new SingleInstance( "error", ".txt", "error" );</p>
						<p>    final JFrame frame=new JFrame( "Just single instance. By NeedJava. 2007.08.29" );</p>
						<p>    //I stay here, to make some friends happy.<br />    frame.addWindowListener( new WindowAdapter()<br />    {<br />      public void windowClosing( WindowEvent we )<br />      {<br />        frame.dispose();</p>
						<p>        System.exit( 0 );<br />      }<br />    } );</p>
						<p>    frame.setBounds( 200, 200, 700, 70 );</p>
						<p>    frame.setVisible( true );<br />  }<br />}<br /></p>
				</font>
		</font>
<img src ="http://www.blogjava.net/needjava/aggbug/141106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-08-29 22:11 <a href="http://www.blogjava.net/needjava/archive/2007/08/29/141106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔SQL〕根据值查找表和字段（转载）</title><link>http://www.blogjava.net/needjava/archive/2007/08/24/69814.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Thu, 23 Aug 2007 21:21:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/08/24/69814.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/69814.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/08/24/69814.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/69814.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/69814.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">-- 我知道一个值“White”，想知道它在哪个表里的哪个字段 </font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">-- 使用Northwind测试<br />USE Northwind<br />GO </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">DECLARE @what varchar(800)<br />SET @what='White'  --要搜索的字符串 </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">DECLARE @sql varchar(8000) </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">DECLARE TableCursor CURSOR LOCAL FOR<br />SELECT sql='IF EXISTS ( SELECT 1 FROM ['+o.name+'] WHERE ['+c.name+'] LIKE </font>
				<a href="mailto:''%'+@what+'%''">
						<font face="Courier New" color="#808080" size="2">''%'+@what+'%'' </font>
				</a>
				<font face="Courier New" color="#808080" size="2">) PRINT ''所在的表及字段：['+o.name+'].['+c.name+']'''<br />FROM syscolumns c JOIN sysobjects o ON c.id=o.id <br />WHERE o.xtype='U' AND c.status&gt;=0 AND c.xusertype IN (175, 239, 231, 167 ) </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">OPEN TableCursor </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">FETCH NEXT FROM TableCursor INTO @sql<br />WHILE @@FETCH_STATUS=0<br />  BEGIN<br />    EXEC( @sql )<br />    FETCH NEXT FROM TableCursor INTO @sql<br />  END </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">CLOSE TableCursor </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">-- 删除游标引用<br />DEALLOCATE TableCursor </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">
				</font> </p>
		<p>
				<font face="Courier New" color="#808080" size="2">-- 测试结果<br />所在的表及字段：[Orders].[ShipName]<br />所在的表及字段：[Customers].[CompanyName] </font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">
				</font> </p>
<img src ="http://www.blogjava.net/needjava/aggbug/69814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-08-24 05:21 <a href="http://www.blogjava.net/needjava/archive/2007/08/24/69814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔SQL〕要查询Begin与End字段都相同的记录，出现次数在n次以上的结果集（改写）</title><link>http://www.blogjava.net/needjava/archive/2007/08/24/69812.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Thu, 23 Aug 2007 21:20:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/08/24/69812.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/69812.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/08/24/69812.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/69812.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/69812.html</trackback:ping><description><![CDATA[
		<font face="Courier New" color="#808080" size="2">要查询Begin与End字段都相同的记录，出现次数在n次以上的结果集<br /><br />有一个数据库表，结构为：（3个字段）<br />Begin 从 字符型<br />End 到 字符型<br />Time 时间 时间型<br /><br />数据：<br />Begin End Time<br />111 222 2002-10-10<br />111 333 2002-10-11<br />111 444 2002-10-12<br />111 222 2002-10-13<br />111 222 2002-10-14<br />111 333 2002-10-15<br />222 111 2002-10-16<br />222 333 2002-10-17<br />222 555 2002-10-18<br />444 222 2002-10-19<br />444 222 2002-10-20<br />666 222 2002-10-21<br /><br />要查询Begin与End字段都相同的记录，出现次数在n次以上的结果集<br /><br />n=2结果集为：<br />Begin End Time<br />111 222 2002-10-10<br />111 333 2002-10-11<br />111 222 2002-10-13<br />111 222 2002-10-14<br />111 333 2002-10-15<br />444 222 2002-10-19<br />444 222 2002-10-20<br /><br />n=3结果集为：<br />Begin End Time<br />111 222 2002-10-10<br />111 222 2002-10-13<br />111 222 2002-10-14<br /><br />不知这种情况的SQL语句如何写？<br />---------------------------------------------------------------<br />USE Northwind<br />GO<br /><br />IF EXISTS( SELECT * FROM dbo.sysobjects WHERE id=object_id( N'[Flight]' ) AND OBJECTPROPERTY( id, N'IsUserTable' )=1 )<br />DROP TABLE [Flight]<br />GO<br /><br />CREATE TABLE [Flight]<br />(<br />  [Begin] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,<br />  [End] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,<br />  [Time] [datetime] NULL <br />) ON [PRIMARY]<br />GO<br /><br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '222', '2002-10-10' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '333', '2002-10-11' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '444', '2002-10-12' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '222', '2002-10-13' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '222', '2002-10-14' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '333', '2002-10-15' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '222', '111', '2002-10-16' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '222', '333', '2002-10-17' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '222', '555', '2002-10-18' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '444', '222', '2002-10-19' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '444', '222', '2002-10-20' )<br />INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '666', '222', '2002-10-21' )<br />GO<br /><br />SELECT * FROM [Flight]<br />GO<br /><br /><br />-- 方法一<br /><br />DECLARE @n int  -- 出现次数<br />SET @n=2<br /><br />SELECT *<br />FROM [Flight] T1<br />WHERE ( SELECT COUNT(*)<br />        FROM [Flight] T2<br />        WHERE T2.[Begin]=T1.[Begin] AND T2.[End]=T1.[End] )&gt;=@n<br />ORDER BY T1.[Begin], T1.[End], T1.[Time]<br /><br /><br /><br />-- 方法二<br /><br />DECLARE @n int  -- 出现次数<br />SET @n=2<br /><br />SELECT *<br />FROM [Flight] T1<br />WHERE EXISTS ( SELECT 1<br />               FROM ( SELECT [Begin], [End]<br />                      FROM [Flight]<br />                      GROUP BY [Begin], [End]<br />                      HAVING COUNT(*)&gt;=@n ) T2<br />               WHERE T2.[Begin]=T1.[Begin] AND T2.[End]=T1.[End] )<br />ORDER BY T1.[Begin], T1.[End], T1.[Time] </font>
<img src ="http://www.blogjava.net/needjava/aggbug/69812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-08-24 05:20 <a href="http://www.blogjava.net/needjava/archive/2007/08/24/69812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔批处理〕从数码相片得到照相时间</title><link>http://www.blogjava.net/needjava/archive/2007/08/14/136768.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Tue, 14 Aug 2007 11:42:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/08/14/136768.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/136768.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/08/14/136768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/136768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/136768.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">@ECHO OFF</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">SETLOCAL EnableDelayedExpansion</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">DEL /F /Q picture.txt 2&gt;NUL</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />::<br />:: 原理：<br />::<br />:: 一般情况下，有EXIF信息的照片，会有三处时间（当然还有特例），第一处格式为：<br />::<br />:: 2001:01:01 02:04:18<br />::<br />:: 第二、第三处是在一起的，中间有个NULL值，如下：<br />::<br />:: 2001:01:01 02:04:18[NULL]2001:01:01 02:04:18<br />::<br />:: 我通过WindowsXP和ACDSee8分析了很多张图片，发现第一处的时间很可能有误，<br />::<br />:: 也就是说，WindowsXP和ACDSee8实际使用的应该是第二或第三处的时间，<br />::<br />:: 使用第二处的时间。<br />::<br />::<br />:: 注意：<br />::<br />:: 1、有些人喜欢把一些秘密藏在图片中，而秘密有可能包含时间，所以，可能有问题，<br />::<br />::    不过，这种情况好像很少？<br />::<br />:: 2、由于FINDSTR.EXE命令的局限性（并非真正的正则表达式），错误是难免的。<br />::<br />::<br />:: 另外：<br />::<br />:: 1、开始我把*.jpeg也列入查找，但发现*.jpe可以搜索到*.jpeg，只好剔掉*.jpeg了<br />::<br />:: 2、我讨厌ACDSee8重命名时，把2001-01-01 02-01-19改成2001-01-01 2-1-19，不好看！<br />::<br />:: 3、其实我写这个的目的就是修改图片名称为照相时间，剩下的以后写<br />::<br />::<br />:: Author: NeedJava<br />::<br />:: Modified: 2007-08-15/2007-08-24/2007-08-25<br />::<br />::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />FOR /R %%a IN ( *.jpg *.jpe *.jfif *.tif ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   CLS</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   ECHO 正在处理〔!%%a!〕</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   SET "final=NULL"</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   IF "!final!"=="NULL" (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      SET /A times=0</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      FOR /F "delims=" %%i IN ( 'FINDSTR.EXE "200 199 201 202" "%%a" 2^&gt;NUL ^| MORE 2^&gt;NUL ^| FINDSTR.EXE /R "\&lt;[1-2][0-9][0-9][0-9][:][0-1][0-9][:][0-3][0-9] [0-2][0-9][:][0-5][0-9][:][0-5][0-9]\&gt;" 2^&gt;NUL' ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">          SET /A times+=1</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">          IF !times! EQU 2 (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">             SET "parse=%%i"</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">             IF "!parse:~-3,1!"==":" IF "!parse:~-9,1!"==" " (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                SET "parse=!parse:~-19!"</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                ECHO Found [!parse!]</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                FOR /F "tokens=1,2,3,4,5,6 delims=: " %%A IN ( "!parse!" ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                    SET "final=%%A-%%B-%%C %%D-%%E-%%F"</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">             )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">          )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   IF "!final!"=="NULL" (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      FOR /F "delims=" %%i IN ( 'FINDSTR.EXE /I "DateTimeOriginal" "%%a" 2^&gt;NUL' ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">          SET "parse=%%i"</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">          IF /I "!parse:~-24,7!"=="&lt;/exif:" IF "!parse:~-30,1!"=="+" (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">             SET "parse=!parse:~-49,19!"</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">             ECHO Found [!parse!]</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">             FOR /F "tokens=1,2,3,4,5,6 delims=-:T" %%A IN ( "!parse!" ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">                 SET "final=%%A-%%B-%%C %%D-%%E-%%F"</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">             )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">          )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   IF NOT "!final!"=="NULL" (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      ECHO Parse [!final!]</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      ECHO [%%~nxa]&gt;&gt;picture.txt</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      ECHO !final!&gt;&gt;picture.txt</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">      ECHO;&gt;&gt;picture.txt</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">   )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">)</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">GOTO :EOF</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">@ECHO ON<br /></font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">剩下的就是改名了，由于要防备同名，也就是一秒内拍了两三张这样的情况，所以需要追加数字序列<br /> </font>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/136768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-08-14 19:42 <a href="http://www.blogjava.net/needjava/archive/2007/08/14/136768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>〔批处理〕得到回收站删除的文件列表</title><link>http://www.blogjava.net/needjava/archive/2007/08/13/136411.html</link><dc:creator>NeedJava</dc:creator><author>NeedJava</author><pubDate>Mon, 13 Aug 2007 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/needjava/archive/2007/08/13/136411.html</guid><wfw:comment>http://www.blogjava.net/needjava/comments/136411.html</wfw:comment><comments>http://www.blogjava.net/needjava/archive/2007/08/13/136411.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/needjava/comments/commentRss/136411.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/needjava/services/trackbacks/136411.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New" color="#808080" size="2">@ECHO OFF</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">SETLOCAL EnableDelayedExpansion</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />::<br />:: 需要区别FAT32和NTFS格式下的回收站<br />::<br />:: FAT32回收站结构如下：<br />::<br />:: [Recycled]<br />:: desktop.ini<br />:: INFO2<br />::<br />:: NTFS回收站结构如下：<br />::<br />:: [Recycler]<br />::   [S-1-5-21-1409082233-448539723-725345543-500]<br />::     desktop.ini<br />::     INFO2<br />::   [S-1-5-21-1844237615-2139871995-1417001333-500]<br />::     desktop.ini<br />::     INFO2<br />::   [S-1-5-21-606747145-261478967-839522115-500]<br />::     desktop.ini<br />::     INFO2<br />::<br />:: 其中：<br />::<br />:: desktop.ini用来定义文件夹，告诉系统：你把存我的文件夹变成回收站的样子<br />::<br />:: INFO2用来存放当前盘符下删除的文件的原来路径，用8.3短文件名，以及与改名文件对应关系<br />::<br />:: 我们就是用的INFO2文件，将里面存放的信息通过两次查找过滤出来<br />::<br />:: 重点：<br />::<br />:: FIND.EXE ":" "C:\Recycled\INFO2" 2&gt;NUL | FINDSTR.EXE /R "^[A-z]:[\\]" 2&gt;NUL<br />::<br />:: 参考：<br />::<br />:: </font>
				<a href="http://www.cn-dos.net/forum/viewthread.php?tid=25053&amp;fpage=1&amp;highlight=tokens%3D1%2B&amp;page=1">
						<font face="Courier New" color="#808080" size="2">http://www.cn-dos.net/forum/viewthread.php?tid=25053&amp;fpage=1&amp;highlight=tokens%3D1%2B&amp;page=1</font>
				</a>
				<br />
				<font face="Courier New" color="#808080" size="2">::<br />:: 感谢：<br />::<br />:: 中国DOS联盟论坛里所有给予我启发的热心人！使我受益匪浅！<br />::<br />:: Author: NeedJava<br />::<br />:: Modified: 2007.08.13<br />::<br />:: BTW: 今晚23时东北方向有英仙座流星雨，我已经调好照相机了<br />::<br />::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />DEL /F /Q deleted.txt 2&gt;NUL</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">FOR %%a IN ( C D E F G H I J K L M N O P Q R S T U V Y X Y Z ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    IF EXIST "%%a:\" (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">       ECHO 正在搜索〔%%a:〕盘下的回收站……</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">       FOR /F "delims=" %%i IN ( 'DIR /AH-D /B /S "%%a:\Recycler\INFO2" 2^&gt;NUL' ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">REM        ECHO [%%i] &amp; PAUSE</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">           CALL :parse %%i</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">       )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">       FOR /F "delims=" %%I IN ( 'DIR /AH-D /B /S "%%a:\Recycled\INFO2" 2^&gt;NUL' ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">REM        ECHO [%%I] &amp; PAUSE</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">           CALL :parse %%I</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">       )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    )</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">)</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">@ECHO ON</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">GOTO :EOF</font>
		</p>
		<p>
				<br />
				<font face="Courier New" color="#808080" size="2">::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />::<br />:: 重点：<br />::<br />:: FIND.EXE ":" "C:\Recycled\INFO2" 2&gt;NUL | FINDSTR.EXE /R "^[A-z]:[\\]" 2&gt;NUL<br />::<br />:: 详细解释请关注上面的网站，无奈何版主的叙述，呵呵，本人坐板凳听<br />::<br />::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />:parse</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">ECHO [%1]&gt;&gt;deleted.txt</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">FOR /F "delims=" %%m IN ( 'FIND.EXE ":" "%1" 2^&gt;NUL ^| FINDSTR.EXE /R "^[A-z]:[\\]" 2^&gt;NUL' ) DO (</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">    ECHO %%m&gt;&gt;deleted.txt</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">)</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">ECHO.&gt;&gt;deleted.txt</font>
		</p>
		<p>
				<font face="Courier New" color="#808080" size="2">
				</font> </p>
		<p>
				<font face="Courier New">
						<font color="#808080">
								<font size="2">后记，鉴于很多病毒喜欢往回收站里面钻，通过查找真正被删除的文件列表，找到对应的删除文件，那么剩下的文件可以看着办了，估计先要用IS杀掉进程</font>
								<br />
								<font size="2">
								</font>
						</font>
				</font>
		</p>
<img src ="http://www.blogjava.net/needjava/aggbug/136411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/needjava/" target="_blank">NeedJava</a> 2007-08-13 15:55 <a href="http://www.blogjava.net/needjava/archive/2007/08/13/136411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>