﻿<?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>C++博客-软件规模度量</title><link>http://www.cppblog.com/bobquain/</link><description>做世界上最好的代码行统计工具</description><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 10:11:28 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 10:11:28 GMT</pubDate><ttl>60</ttl><item><title>以前做的一些小玩意儿（一）</title><link>http://www.cppblog.com/bobquain/archive/2012/03/10/126928.html</link><dc:creator>bobquain</dc:creator><author>bobquain</author><pubDate>Sat, 10 Mar 2012 09:59:00 GMT</pubDate><guid>http://www.cppblog.com/bobquain/archive/2012/03/10/126928.html</guid><wfw:comment>http://www.cppblog.com/bobquain/comments/126928.html</wfw:comment><comments>http://www.cppblog.com/bobquain/archive/2012/03/10/126928.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/bobquain/comments/commentRss/126928.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobquain/services/trackbacks/126928.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; ">无聊啊，陆续把以前做的一些小玩意儿共享一下。由于时间比较长了，那时候设计能力有限，现在也没时间维护，如果发现bug就别用了，望体谅。</span><br /><br /><span style="font-size: 10pt; ">第一个</span><span style="font-size: 10pt; ">是叫</span><span style="font-size: 10pt; ">Secret Bitmap，程序大小88k。下载链接：</span><a href="http://files.cppblog.com/bobquain/SecretBitmap_V1.2.1_CN_Setup.zip"><span style="font-size: 10pt; ">http://files.cppblog.com/bobquain/SecretBitmap_V1.2.1_CN_Setup.zip</span></a><br /><span style="font-size: 10pt; ">以前在CSDN的下载：</span><a href="http://download.csdn.net/source/182295"><span style="font-size: 10pt; ">http://download.csdn.net/source/182295</span></a><br /><br /><br /><br />
<center>
<p class="TITLE"><strong style="font-size: 14pt; ">Secret Bitmap</strong></p>
<p class="TITLE"><font face="KF-GB Kaishu"><span lang="zh-cn">在位图中隐藏信息</span></font></p>
</center><font color="#800000">
<hr noshade="" size="2" />
</font><font size="4"><font face="Tahoma">
<h1><span style="font-size: 14pt; ">1. 介绍</span></h1>
</font></font>
<p class="BODY"><font face="KF-GB Kaishu" size="3"><span style="font-size: 10pt; ">首先对</span><span lang="zh-cn" style="font-size: 10pt; ">在位图中隐藏信息的原理做一下简单的介绍：</span></font></p>
<p class="BODY"><span lang="zh-cn">&nbsp; &nbsp;&nbsp;<font face="'KF-GB Kaishu'" size="3"><span style="font-size: 10pt; ">我以24位位图为例（24位位图即用24位来表示一个像素点颜色的位图），因为就目前来讲用24位位图来隐藏信息是最安全的。大家都知道，世界上任何一种颜色都可以用红，绿，蓝以不同比例调和出来，这三种颜色也通常被人们称为三原色。24位色即用8位来表示红色，8位来表示绿色，8位来表示蓝色。8位即一个字节，用十进制表示的话，最小值为0，最大值为255。我们通常知道，（0,0,0）表示黑色，(255,255,255）表示白色，（255,0,0）表示红色等等。24位色最大可表示2的24次方（即16,777,216）种颜色，这已经超出了人类肉眼可以分辨的颜色。举个例子：人类的肉眼几乎无法分辨白色（255，255，255）和（254，254，254）之间的区别，255表示为二进制是11111111，而254表示为二进制为11111110；其他颜色同理，如果只改变其三原色每个字节中的最后一位的话，人类的肉眼几乎无法分辨。这样一来，我们就</span></font></span><span lang="zh-cn" style="font-family: 'KF-GB Kaishu'; font-size: 10pt; ">可以利用每个像素（3个字节）中每个字节的最后一位来存储一些额外的信息，并且不会增加位图文件的大小，这也就是用位图来隐藏信息的原理。当然，我们也可以多占用一些位来加大隐藏数据的信息量，但是这样也就更容易被人类的肉眼所察觉。但是，请大家注意，利用位图隐藏信息仅仅是一种欺骗，并非什么加密技术，如果需要更安全的保护还需要和加密技术搭配使用。</span></p>
<p class="BODY"><font><span lang="zh-cn">&nbsp; &nbsp;&nbsp;<font face="Tahoma" size="4"><span style="font-size: 10pt; ">此款工具在同类工具中的优点是：提供密码加密，数据加密和隐藏位数的选择。</span></font></span></font><font face="KF-GB Kaishu" size="3"><span lang="zh-cn" style="font-size: 10pt; ">在占用位数过多的情况下，比较容易被别人看出位图的瑕疵（如果有原图作为参考会更容易），也就可以怀疑该位图中隐藏了信息。但是，即使这样也没有关系，所有隐藏的数据在隐藏之前已经经过了加密，并且有密码的保护，即使有人分析出了数据，也需要进行解密。所以说它的安全性还是相当高的。</span></font></p>
<font face="Tahoma" size="4">
<p class="BODY">&nbsp; &nbsp;&nbsp;<font face="'KF-GB Kaishu'" size="3"><span style="font-size: 10pt; ">在人们的隐私越来越难保护的今天，也许你正需要它，也许</span></font><span lang="zh-cn" style="font-family: 'KF-GB Kaishu'; font-size: 10pt; ">...</span><span style="font-family: 'KF-GB Kaishu'; font-size: 10pt; ">将来的某天</span><span lang="zh-cn" style="font-family: 'KF-GB Kaishu'; font-size: 10pt; ">你</span><span style="font-family: 'KF-GB Kaishu'; font-size: 10pt; ">会需要它。</span></p>
</font><font face="Tahoma" size="4">
<h1><span style="font-size: 14pt; ">2. 如何使用</span></h1>
</font>
<p class="BODY"><font face="KF-GB Kaishu" size="3"><span lang="zh-cn" style="font-size: 10pt; ">Secret Bitmap的</span><span style="font-size: 10pt; ">界面比较易懂，参照下图做一下简单介绍：</span></font></p>
<p class="BODY"><img src="http://www.cppblog.com/images/cppblog_com/bobquain/SecretBitmap.PNG" border="0" alt="" /></p>
<font face="Tahoma" size="4">
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp;<span style="font-size: 10pt; "> 1 </span><span lang="zh-cn" style="font-size: 10pt; ">位图文件：原位图文件。</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp; <span lang="zh-cn" style="font-size: 10pt; ">2</span> <span lang="zh-cn" style="font-size: 10pt; ">隐藏文件：需要被隐藏的文件</span><span style="font-size: 10pt; ">。</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp; <span lang="zh-cn" style="font-size: 10pt; ">3</span> <span lang="zh-cn" style="font-size: 10pt; ">密码：加密用密码输入(采用MD5加密)。</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp; <span lang="zh-cn" style="font-size: 10pt; ">4</span> <span lang="zh-cn" style="font-size: 10pt; ">密码确认：密码确认的输入</span><span style="font-size: 10pt; ">。</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp; <span lang="zh-cn" style="font-size: 10pt; ">5</span> <span lang="zh-cn" style="font-size: 10pt; ">隐藏(带面具)：隐藏，点击后打开保存文件的对话框，默认保存名称为原位图的名称。文件保存后，保存路径会被记录下来，下次实施隐藏时默认打开上次的保存路径。(数据加密算法...保密)</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp; <span lang="zh-cn" style="font-size: 10pt; ">6</span> <span lang="zh-cn" style="font-size: 10pt; ">占用位选择：点击黄色的锁形图案，可打开或关闭占用位。目前可以使用的占用位的数量为1，2或4。</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp; <span lang="zh-cn" style="font-size: 10pt; ">7</span> <span lang="zh-cn" style="font-size: 10pt; ">位图文件：隐藏了信息的位图文件</span><span style="font-size: 10pt; ">。</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp; <span lang="zh-cn" style="font-size: 10pt; ">8</span> <span lang="zh-cn" style="font-size: 10pt; ">密码：解密用密码输入。</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3">&nbsp;&nbsp;&nbsp; <span lang="zh-cn" style="font-size: 10pt; ">9</span> <span lang="zh-cn" style="font-size: 10pt; ">反隐藏(摘掉面具)：反隐藏，点击后打开保存文件的对话框，默认保存名称为原隐藏文件的名称。文件保存后，保存路径会被记录下来，下次实施反隐藏时默认打开上次的保存路径。</span></font></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3"><span lang="zh-cn" style="font-size: 10pt; ">&nbsp;&nbsp;&nbsp; 10</span> <span lang="zh-cn" style="font-size: 10pt; ">日志：显示错误和隐藏/反隐藏的结果信息</span><span style="font-size: 10pt; ">。</span></font></p>
<h1><span style="font-size: 14pt; ">3. 改进</span></h1>
<p class="BODY"><font face="KF-GB Kaishu" size="3"><span lang="zh-cn" style="font-size: 10pt; ">对比之前发布的V1.1.0版，</span><span style="font-size: 10pt; ">V</span><span lang="zh-cn" style="font-size: 10pt; ">1.2.0主要的改进如下：</span></font></p>
<p class="BODY"><span lang="zh-cn"><font face="KF-GB Kaishu" size="3"><span style="font-size: 10pt; ">&nbsp;&nbsp;&nbsp; 1 增加了托拽功能：用户可以从Explorer中托拽文件到[Bitmap File]或[Hidden File]的编辑框中。</span></font></span></p>
<p class="BODY"><span lang="zh-cn"><font face="KF-GB Kaishu" size="3"><span style="font-size: 10pt; ">&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;去掉了指定输出文件夹的功能，替换为直接打开保存文件对话框，使用户更容易在保存文件时修改文件的名称。</span></font></span></p>
<p class="BODY"><font face="KF-GB Kaishu" size="3"><span style="font-size: 10pt; ">V</span><span lang="zh-cn" style="font-size: 10pt; ">1.</span><span style="font-size: 10pt; ">2</span><span lang="zh-cn" style="font-size: 10pt; ">.</span><span style="font-size: 10pt; ">1</span><span lang="zh-cn" style="font-size: 10pt; ">的改进如下：</span></font></p>
<p class="BODY"><span lang="zh-cn"><font face="KF-GB Kaishu" size="3"><span style="font-size: 10pt; ">&nbsp;&nbsp;&nbsp; 1 修正了显示设定为非96DPI的情况下，</span></font></span><span lang="zh-cn"><font face="KF-GB Kaishu" size="3"><span style="font-size: 10pt; ">占用位选择的锁形图案显示位置不正确的Bug。<br /><br /></span></font></span></p>
</font><img src ="http://www.cppblog.com/bobquain/aggbug/126928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobquain/" target="_blank">bobquain</a> 2012-03-10 17:59 <a href="http://www.cppblog.com/bobquain/archive/2012/03/10/126928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以前做的一些小玩意儿（三）</title><link>http://www.cppblog.com/bobquain/archive/2010/09/18/126935.html</link><dc:creator>bobquain</dc:creator><author>bobquain</author><pubDate>Fri, 17 Sep 2010 16:26:00 GMT</pubDate><guid>http://www.cppblog.com/bobquain/archive/2010/09/18/126935.html</guid><wfw:comment>http://www.cppblog.com/bobquain/comments/126935.html</wfw:comment><comments>http://www.cppblog.com/bobquain/archive/2010/09/18/126935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bobquain/comments/commentRss/126935.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobquain/services/trackbacks/126935.html</trackback:ping><description><![CDATA[<p>无聊啊，陆续把以前做的一些小玩意儿共享一下。由于时间比较长了，那时候设计能力有限，现在也没时间维护，如果发现bug就别用了，望体谅。<br><br>这次是3个Eclipse的插件：<br><br><span style="COLOR: #ff6600"><strong style="FONT-SIZE: 24pt">No.1</strong></span><br>Statistic-Lines，Eclipse上统计代码行数的插件，就是之前第一篇随笔说的那个"org.holon.statistic.lines"<a>。由于当时发布的时候，package名字里出现了我当时项目组的名字，后来被领导责令把当时发布的帖子删除了，故借此对当时关注这个插件的人说声抱歉。下载链接：<a href="http://files.cppblog.com/bobquain/Statistic-Lines-311-Eclipse311-BIN.zip">http://files.cppblog.com/bobquain/Statistic-Lines-311-Eclipse311-BIN.zip</a></a><br><a href="http://files.cppblog.com/bobquain/SecretBitmap_V1.2.1_CN_Setup.zip"></a><br><img src="http://www.cppblog.com/images/cppblog_com/bobquain/lines-1.PNG" border=0><br><br><img style="WIDTH: 798px; HEIGHT: 565px" height=565 src="http://www.cppblog.com/images/cppblog_com/bobquain/lines-2.PNG" width=798 border=0><br><br><br><span style="FONT-SIZE: 24pt; COLOR: #ff6600"><strong>No.2</strong></span><br>Plug-in-Link<a>，Eclipse上安装插件的插件，名字比较绕口，呵呵<a>。下载链接：<a href="http://files.cppblog.com/bobquain/Statistic-Lines-311-Eclipse311-BIN.zip"><font color=#666666></a><font color=#cc0066></a><font color=#000000><a href="http://files.cppblog.com/bobquain/Plug-in-Link-311-Eclipse311-BIN.zip">http://files.cppblog.com/bobquain/Plug-in-Link-311-Eclipse311-BIN.zip</a><br><br></font></font></font><a href="http://files.cppblog.com/bobquain/SecretBitmap_V1.2.1_CN_Setup.zip"></a><strong style="FONT-SIZE: 18pt">保持一个干净的Eclipse</strong><br>背景：<br>如果你是一个Eclipse的用户，如果你喜欢追随Eclipse的开发步伐，如果你喜欢尝试各种不同的插件，如果你经常在同一个Eclipse上进行插件升级，如果你安装插件仍是把它安装在Eclipse的安装目录之内，那么，朋友，你有必要仔细阅读一下以下文字，因为你极有可能会遇到以下问题：<br>1．每次使用最新的Eclipse，重新安装需要的插件，一个又一个，烦。<br>2．因为某些插件影响速度(或许很小)，不想使用的时候，又不方便删掉（譬如多语言包），忍。<br>3．每次尝试新插件，不好用，删文件夹，一个又一个，还是烦。<br>4．每次升级插件（某些非官方插件经常会在同一版本的Eclipse上进行升级），删文件夹，一个又一个，还要再安装，更烦。<br><br>已经很烦了，现在讲讲解决办法，对于上面的问题，解决办法无疑就是将插件安装在Eclipse的安装目录之外，主要方法有以下两个：<br>1．利用Eclipse的Product extensions机制，Eclipse升级时只需升级Eclipse本身，而插件依然可以利用无需重新安装。但是，有些Plugin开发商（几乎是所有）为了省事未进行update site的工作，无奈。（但，可自己进行update site工作）<br>2．利用Eclipse的并未推荐的连接文件，虽为未推荐，但相比来说已经是最好的选择。但又因为并未推荐，所以没有注意事项可参考，使用者由于对连接文件的机制不清楚，经常会造成插件不能正常安装（例如：更改同一个连接文件到同一个插件）。<br>综上所述，导致了我决定开发一个管理连接文件的工具（终于引到了正题，：）），其实最初是为我们项目组考虑，原因是我们要经常要对所开发插件进行更换，测试。<br>插件下载连接：<br>可能有些人会问，这个插件安装怎么办？这个问题我只能说没办法，还是要安装在Eclipse的安装目录之内，但放心它只有一个文件夹，删起来比较容易（希望不会这么惨，：））。</p>
<p>关于版本：我只做了for Eclipse-SDK-3.0.1的版本，主要是考虑到大家使用的2.1.3应该已经定形，遇到上面问题的几率比较小，如果真的有需要请告知我。<br>使用方法：<br>1．打开<br><img src="http://www.cppblog.com/images/cppblog_com/bobquain/Plug-in-Link-1.PNG" border=0>&nbsp;</p>
<p>2．添加连接<br>说明：插件解压后必须如下结构（不是的话，手动建立即可）：<br>&nbsp;link folder/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eclipse/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; features/(不是必要的)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plugins/<br>譬如有一个插件（eclipse-FTP-WebDAV-3.0.1）在资源管理器中如图：<br>&nbsp;<br>在Plug-ins Link View中，如下图：<br><img src="http://www.cppblog.com/images/cppblog_com/bobquain/Plug-in-Link-2.PNG" border=0><br>&nbsp;<br>点击&#8220;+&#8221;，出现添加页面，如下图：<br><img src="http://www.cppblog.com/images/cppblog_com/bobquain/Plug-in-Link-3.PNG" border=0><br>&nbsp;<br>选定后，Finish。<br>&nbsp;<br>确保为Enabled。<br>3．重新启动即可生效。<br>4．其他操作，简单明了，一试便知。</p>
<p><br><br><span style="FONT-SIZE: 24pt; COLOR: #ff6600"><strong>No.3<br></strong></span><br>Stand-alone-Help，Eclipse上可独立打开多个语言帮助的插件，当时在日文环境下，给同事开发的，没什么大用，呵呵<a>。下载链接：<a href="http://files.cppblog.com/bobquain/Statistic-Lines-311-Eclipse311-BIN.zip"><font color=#666666></a><a href="http://files.cppblog.com/bobquain/Stand-alone-Help-311-Eclipse311-BIN.zip">http://files.cppblog.com/bobquain/Stand-alone-Help-311-Eclipse311-BIN.zip</a><font color=#cc0066><font color=#000000></font></font></font><br></p>
<img src ="http://www.cppblog.com/bobquain/aggbug/126935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobquain/" target="_blank">bobquain</a> 2010-09-18 00:26 <a href="http://www.cppblog.com/bobquain/archive/2010/09/18/126935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以前做的一些小玩意儿（二）</title><link>http://www.cppblog.com/bobquain/archive/2010/09/17/126930.html</link><dc:creator>bobquain</dc:creator><author>bobquain</author><pubDate>Fri, 17 Sep 2010 15:58:00 GMT</pubDate><guid>http://www.cppblog.com/bobquain/archive/2010/09/17/126930.html</guid><wfw:comment>http://www.cppblog.com/bobquain/comments/126930.html</wfw:comment><comments>http://www.cppblog.com/bobquain/archive/2010/09/17/126930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bobquain/comments/commentRss/126930.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bobquain/services/trackbacks/126930.html</trackback:ping><description><![CDATA[无聊啊，陆续把以前做的一些小玩意儿共享一下。由于时间比较长了，那时候设计能力有限，现在也没时间维护，如果发现bug就别用了，望体谅。<br><br>第二个是叫K File Converter，程序大小200k。下载链接：<a href="http://files.cppblog.com/bobquain/KFC_V1.1.1_CN_Setup.zip">http://files.cppblog.com/bobquain/KFC_V1.1.1_CN_Setup.zip</a><a href="http://files.cppblog.com/bobquain/SecretBitmap_V1.2.1_CN_Setup.zip"><font color=#666666></font></a><br>以前在CSDN的下载：<a href="http://download.csdn.net/source/182300">http://download.csdn.net/source/182300</a><br><br><br><br>
<center>
<p class=TITLE>K File Converter</p>
<p class=TITLE><font face="KF-GB Kaishu">可扩展批量文件转换器</font></p>
</center><font color=#800000>
<hr noShade SIZE=2>
</font><font size=4><font face=Tahoma>
<h1>1. Introduction</h1>
<p class=BODY><font face="KF-GB Kaishu" size=3>大多数编程人员在开发过程中经常会需要某种文件转换操作，如：</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 1 批量的文件改名。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 2 把文件转换成Dos格式，Unix格式或Mac格式。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 3 把文件转换成Shift-JIS码，EUC码或JIS码。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 4 把文件从本地编码转换成ASCII码，或者从ASCII码转换成本地编码。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>这些转换工具有的是系统自带的，有的是第三方的免费工具，而有些则需要自己开发。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>但是这些工具往往没有图形界面，或者不支持对文件夹的操作和对特定文件的过滤。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>K File Converter正是为了解决这个问题而设计，用户无论是使用别人的工具还是自己开发的工具，都无需为了对图形界面和对文件夹以及文件过滤的支持而浪费时间。</font></p>
<h1>2. How To Use</h1>
</font></font>
<p class=BODY><font face="KF-GB Kaishu" size=3>K File Converter界面比较易懂，参照下图做一下简单介绍：</font></p>
<p class=BODY><img style="WIDTH: 800px; HEIGHT: 560px" height=560 src="http://www.cppblog.com/images/cppblog_com/bobquain/KFC.PNG" width=800 border=0></p>
<font face=Tahoma size=4>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 1 <span lang=zh-cn>输入文件夹：被转换文件所在路径。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>2</span> <span lang=zh-cn>输入文件名格式：输入文件名过滤，*代表任意字符串，?代表任意字符，每个文件名格式用|隔开</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>3</span> <span lang=zh-cn>输入刷新：[6]没有选中的情况下，当[1]或[2]发生改变或[1]指定路径中文件变更时，点击此按钮进行树形视图[4]的刷新。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>4</span> <span lang=zh-cn>输入视图：所有符合[2]过滤条件的文件都以树形方式显示在此视图中</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>5</span> <span lang=zh-cn>包含子文件夹：选中情况下，对[1]指定文件夹和所有它的子文件夹中的文件进行过滤；没选中情况下，不对子文件夹进行过滤。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>6</span> <span lang=zh-cn>输入自动刷新：选中情况下，当[1]或[2]发生改变时，自动刷新[4]视图。但是，[1]的指定路径中有文件变更时，需点击按钮[4]进行刷新。没选中情况下，不进行自动刷新。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>7</span> <span lang=zh-cn>输出文件夹：转换后文件的输出路径</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>8</span> <span lang=zh-cn>输出文件名格式：输出文件格式，可引用变量：${prefix}代表输入文件名前缀,${suffix}代表输入文件名后缀(也就是扩展名)。${prefix}和${suffix}可不引用或引用多次。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>9</span> <span lang=zh-cn>输出刷新：[11]没有选中的情况下，当[7]或[8]发生改变或[1]指定路径中文件变更时，点击此按钮进行[4]树形视图的刷新。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3><span lang=zh-cn>&nbsp;&nbsp;&nbsp; 10</span> <span lang=zh-cn>输出视图：按照[8]中格式以树形方式显示所有输出文件的预览</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>11</span> <span lang=zh-cn>输出自动刷新：选中情况下，当[7]或[8]发生改变时，自动刷新[10]视图</span>。<span lang=zh-cn>但是，[7]的指定路径中文件变更时，需点击按钮[9]进行刷新；没选中情况下，不进行自动刷新。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>12</span> <span lang=zh-cn>转换器选择：指定转换所用转换器</span>。预置的转换器主要有4种，共13个：</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) 文件改名(复制原文件)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2) 文件改名(移动原文件)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3) 文件行结束符转换成Dos格式(CRLF)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4) 文件行结束符转换成Unix格式(LF)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (5) 文件行结束符转换成Mac格式(CR)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (6) 文件编码转换为Shift-JIS码(自动判断输入文件的编码)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (7) 文件编码转换为EUC码(自动判断输入文件的编码)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (8) 文件编码转换为New-JIS码(自动判断输入文件的编码)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (9) 文件编码转换为Old-JIS码(自动判断输入文件的编码)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (10) 文件编码转换为Nec-JIS码(自动判断输入文件的编码)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (11) 文件MD5验证码的生成(MD5加密：目前国外大多数网站提供的下载文件的验证码)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (12) 文件编码从本地编码转换为ASCII码(转换器为JDK中提供的native2ascii.exe程序，不会自动判断输入文件的编码；还有，使用前用户要手动修改JDK的路径)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (13) 文件编码从ASCII码转换为本地编码(转换器为JDK中提供的native2ascii.exe程序，不会自动判断输入文件的编码；还有，使用前用户要手动修改JDK的路径)。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3><span lang=zh-cn>&nbsp;&nbsp;&nbsp; 13</span> <span lang=zh-cn>配置转换器：点击打开转换器配置窗口。具体使用见[3.How To Extend]</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3><span lang=zh-cn>&nbsp;&nbsp;&nbsp; 14</span> <span lang=zh-cn>运行/停止：运行转换/停止转换。显示为"Run"时，点击后开始运行，运行中名称变为"Stop"，点击可停止转换。转换停止或全部结束后，名称变为"Run"</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3><span lang=zh-cn>&nbsp;&nbsp;&nbsp; 15</span> <span lang=zh-cn>日志：显示错误和转换结果信息</span>。</font></p>
<h1>3. How To Extend</h1>
<p class=BODY><font face="KF-GB Kaishu" size=3><span lang=zh-cn>用户如果想增加转换器，可点击上图中按钮[13]，打开转换器配置窗口。转换器可以是任何命令行的执行程序，包括cmd.exe，java.exe和提供命令行参数的GUI执行程序。注意：转换器至少需要有输入文件和输出文件两个参数。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3><span lang=zh-cn>转换器配置界面也非常简单，通过下图做一下简单介绍</span>：</font></p>
<p class=BODY><img height=393 src="http://www.cppblog.com/images/cppblog_com/bobquain/KFC_config.PNG" width=473 border=0></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 1 <span lang=zh-cn>转换器列表：显示转换器列表</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 2 <span lang=zh-cn>新建：做成新的转换器</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>3</span> <span lang=zh-cn>复制：做成新的转换器并复制当前转换器配置到新做成的转换器</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>4</span> <span lang=zh-cn>删除：删除当前选择的转换器</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>5</span> <span lang=zh-cn>上移：当前选择的转换器上移一格</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>6</span> <span lang=zh-cn>下移：当前选择的转换器下移一格</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>7</span> <span lang=zh-cn>标题：转换器的标题</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>8</span> <span lang=zh-cn>执行文件：转换器运行的执行文件</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>9</span> <span lang=zh-cn>参数：[8]中指定执行文件的参数</span>。可引用变量：${infile}为输入文件，${outfile}为输出文件，${location}为执行文件所在文件夹。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>10</span> <span lang=zh-cn>工作路径：[8]中指定</span>执行文件的工作路径。可引用变量：${location}为执行文件所在文件夹。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>11</span> <span lang=zh-cn>OK：保存所有修改并关闭配置窗口</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>12</span> <span lang=zh-cn>Cancel：取消所有修改并关闭配置窗口</span>。</font></p>
<h1>4. Improve</h1>
<p class=BODY><font face="KF-GB Kaishu" size=3><span lang=zh-cn>对比之前发布的beta版，正式版</span>V<span lang=zh-cn>1.0.0主要的改进如下：</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 1 <span lang=zh-cn>输入视图和输出视图做到近乎完美的同步</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 2 <span lang=zh-cn>增加了输入视图和输出视图的自动刷新，并提供开关</span>。<span lang=zh-cn>当文件比较多，严重影响自动刷新时，可关闭自动刷新功能。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>3</span> <span lang=zh-cn>转换器配置窗口中增加了[Copy]按钮</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>4</span> <span lang=zh-cn>解决了转换器配置窗口中点击上移，下移或删除按钮之后回到主窗口进行文件转换，所选转换器会错乱的bug</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>5</span> <span lang=zh-cn>增加了转换停止的功能，这样可以以正常方式停止当前的转换操作；并且转换期间中不影响图形界面操作</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; <span lang=zh-cn>6</span> <span lang=zh-cn>预置了更多实用的转换器，如：行结尾符的转换和文件编码的转换</span>。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 7 文件改名转换器没有采用"cmd.exe /c copy"，原因是速度稍慢。</font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>V<span lang=zh-cn>1.</span>1<span lang=zh-cn>.0的改进如下：</span></font></p>
<p class=BODY><span lang=zh-cn><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 1 增加了托拽功能：用户可以从Explorer中托拽文件或文件夹到[Input/Output]组中。如果托拽的是文件夹，文件夹的绝对地址将写到Input Directory或Output Directory中。</font></span></p>
<p class=BODY><span lang=zh-cn><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果托拽的是文件，文件所在文件夹的绝对地址将写到Input Directory或Output Directory中，文件名称将写到File Name Patterns中。</font></span></p>
<p class=BODY><span lang=zh-cn><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 2 将Input Directory/Output Directory和File Name Patterns的编辑框变成了可输入的ComboBox框，并增加了保存历史记录的功能。</font></span></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 3 <span lang=zh-cn>增加了手动刷新的快捷键（F5）。当输入焦点在Input区域时，刷新输入视图；当输入焦点在Output区域时，刷新输出视图。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>V<span lang=zh-cn>1.</span>1<span lang=zh-cn>.</span>1<span lang=zh-cn>的改进如下：</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 1 <span lang=zh-cn>修正了</span></font><span lang=zh-cn><font face="KF-GB Kaishu" size=3>File Name Patterns</font></span><font face="KF-GB Kaishu" size=3><span lang=zh-cn>对文件过滤时严格区分大小写的Bug。</span></font></p>
<p class=BODY><font face="KF-GB Kaishu" size=3>&nbsp;&nbsp;&nbsp; 2 <span lang=zh-cn>将Input Directory</span>/<span lang=zh-cn>Output Directory浏览对话框的初始路径设定为当前输入框中的路径。</span></font></p>
</font><a href="http://download.csdn.net/source/182295"><font color=#666666></font></a><br>
<img src ="http://www.cppblog.com/bobquain/aggbug/126930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bobquain/" target="_blank">bobquain</a> 2010-09-17 23:58 <a href="http://www.cppblog.com/bobquain/archive/2010/09/17/126930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>