﻿<?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-Solo</title><link>http://www.blogjava.net/freeatom/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 23:43:40 GMT</lastBuildDate><pubDate>Wed, 08 Apr 2026 23:43:40 GMT</pubDate><ttl>60</ttl><item><title>Spring与ContextLoaderListener相关的异常处理</title><link>http://www.blogjava.net/freeatom/archive/2007/12/25/170235.html</link><dc:creator>Exiler</dc:creator><author>Exiler</author><pubDate>Tue, 25 Dec 2007 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/freeatom/archive/2007/12/25/170235.html</guid><wfw:comment>http://www.blogjava.net/freeatom/comments/170235.html</wfw:comment><comments>http://www.blogjava.net/freeatom/archive/2007/12/25/170235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeatom/comments/commentRss/170235.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeatom/services/trackbacks/170235.html</trackback:ping><description><![CDATA[<p>在使用Spring相关产品时，你可能会碰到下面这种异常：<br />
Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener<br />
这是异常的第一行，按以往的经验，第一行应该就是问题所在，但是实际上，从这行来看你根本不知道错在哪里。<br />
<br />
后面接下来的是：<br />
Error creating bean with name 'basicProcessingFilter' <br />
Cannot resolve reference to bean 'authenticationManager' <br />
while setting bean property 'authenticationManager'; </p>
<p>nested exception is Error creating bean with name 'authenticationManager' <br />
Cannot resolve reference to bean 'casAuthenticationProvider' <br />
while setting bean property 'providers' with key [0]; </p>
<p>nested exception is : Error creating bean with name 'casAuthenticationProvider' <br />
Cannot resolve reference to bean 'statelessTicketCache' <br />
while setting bean property 'statelessTicketCache';</p>
<p>nested exception is: Error creating bean with name 'statelessTicketCache' <br />
Error setting property values; </p>
<p>nested exception is <br />
nested PropertyAccessExceptions (1) are:<br />
PropertyAccessException 1: <br />
TypeMismatchException: </p>
<p>Failed to convert property value of type [net.sf.ehcache.Cache] <br />
to required type [net.sf.ehcache.Ehcache] for property 'cache'</p>
<p>Error creating bean with name 'authenticationManager' <br />
Cannot resolve reference to bean 'casAuthenticationProvider' <br />
while setting bean property 'providers' with key [0]; </p>
<p>nested exception is <br />
Error creating bean with name 'casAuthenticationProvider' <br />
Cannot resolve reference to bean 'statelessTicketCache' while setting bean property 'statelessTicketCache'; </p>
<p>nested exception is <br />
Error creating bean with name 'statelessTicketCache' <br />
Error setting property values; </p>
<p>nested exception is <br />
nested PropertyAccessExceptions (1) are:<br />
PropertyAccessException 1: org.springframework.beans.TypeMismatchException: <br />
Failed to convert property value of type [net.sf.ehcache.Cache] <br />
to required type [net.sf.ehcache.Ehcache] for property 'cache'</p>
<p>Error creating bean with name 'casAuthenticationProvider' <br />
Cannot resolve reference to bean 'statelessTicketCache' <br />
while setting bean property 'statelessTicketCache'; </p>
<p>nested exception is <br />
Error creating bean with name 'statelessTicketCache' <br />
Error setting property values; </p>
<p>nested exception is PropertyAccessExceptionsException; <br />
nested PropertyAccessExceptions (1) are:<br />
PropertyAccessException 1:TypeMismatchException: <br />
Failed to convert property value of type [net.sf.ehcache.Cache] <br />
to required type [net.sf.ehcache.Ehcache] for property 'cache'</p>
<p>Error creating bean with name 'statelessTicketCache' <br />
Error setting property values; </p>
<p>nested exception is PropertyAccessExceptionsException; <br />
nested PropertyAccessExceptions (1) are:<br />
PropertyAccessException 1: org.springframework.beans.TypeMismatchException: <br />
Failed to convert property value of type [net.sf.ehcache.Cache] <br />
to required type [net.sf.ehcache.Ehcache] for property 'cache'</p>
<p>PropertyAccessExceptionsException; <br />
nested PropertyAccessException details (1) are:<br />
PropertyAccessException 1:<br />
ypeMismatchException: <br />
Failed to convert property value of type [net.sf.ehcache.Cache] <br />
to required type [net.sf.ehcache.Ehcache] for property 'cache'<br />
<br />
上面的内容是我将重复信息去掉，并分块后的结果。<br />
<br />
从报错机制可以看出来，spring出现异常不同于普通的java异常，我们查异常的习惯一般是关注第一行，但是sping恰恰相反，要在sping中查错，你必须分解他，因为spring的嵌套层次比较多，它报错是从最高层报起，然后逐层往下，每个层次都会要报错，直到最终出错的地方，因此查sping的错必须逐层分解到最底层，那里才是真正出错的地方。<br />
<br />
OK，现在看出来了，真正错误的原因是：<br />
Failed to convert property value of type [net.sf.ehcache.Cache] <br />
to required type [net.sf.ehcache.Ehcache] for property 'cache'<br />
<br />
我出现这个错误的原因是使用了Acegi 1.0.5，它本身自带了ehcache 1.2.4.jar<br />
但是我同时还使用了hibernate3.1,从Eclipse导入hibernate3.1时，将会导入ehcache 1.1.jar，因为hibernate本身也要使用EHCache，但是版本不同。</p>
<img src ="http://www.blogjava.net/freeatom/aggbug/170235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeatom/" target="_blank">Exiler</a> 2007-12-25 10:02 <a href="http://www.blogjava.net/freeatom/archive/2007/12/25/170235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JMS+腾讯通RTX，出现消息积压，导致消息发送失败。</title><link>http://www.blogjava.net/freeatom/archive/2007/12/24/169933.html</link><dc:creator>Exiler</dc:creator><author>Exiler</author><pubDate>Mon, 24 Dec 2007 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/freeatom/archive/2007/12/24/169933.html</guid><wfw:comment>http://www.blogjava.net/freeatom/comments/169933.html</wfw:comment><comments>http://www.blogjava.net/freeatom/archive/2007/12/24/169933.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/freeatom/comments/commentRss/169933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeatom/services/trackbacks/169933.html</trackback:ping><description><![CDATA[<p align="left">公司做了套由JMS做消息队列，从JMS取出对象后转交给RTX服务器发送RTX消息的机制。<br />
前几天出现重大BUG：消息不发送。<br />
<br />
经过两天的测试发现了症结所在：<br />
我们通过RTX服务器发送RTX消息的机制是通过向一个URL后面加参数来实现的，而这个请求URL，在RTX服务器上默认超时时间设置为0，即永不超时，同时此服务器设置的同一个连接两次发送消息的最短间隔时间为15毫秒。<br />
因为我们网管的失误，打开了8012端口，此端口为RTX服务器接收消息的端口，致使开发环境中的消息能够发送到工作环境的服务器，使得RTX服务器接收的并发量出现瞬时过大现象，RTX服务器判断为DDOS攻击，因此拒绝服务，此服务器拒绝服务的方式为不返回任何值。<br />
同时，因为设置的超时时间为0，因此后继的消息因为前面的并未抛出超时异常也未发送完成，所以积压在JMS队列中，造成了消息发送失败的现象。<br />
<br />
一开始我一直在找JMS的原因，因为曾经在某处看到过JMS服务器并不稳定的文章，但是我在测试过程中发现，JMS还是很强大的，在消息积压的时候，其队列中最高曾积压了4000多条消息，仍然能够继续工作，我使用的是ActiveMQ+Tomcat6.10。<br />
<br />
希望能给碰到类似JMS消息积压现象的朋友一点启示，从JMS消息不能正常取出入手，或许会有收获！</p>
<img src ="http://www.blogjava.net/freeatom/aggbug/169933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeatom/" target="_blank">Exiler</a> 2007-12-24 09:33 <a href="http://www.blogjava.net/freeatom/archive/2007/12/24/169933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Error Creating SessionFactory 异常</title><link>http://www.blogjava.net/freeatom/archive/2007/12/09/166445.html</link><dc:creator>Exiler</dc:creator><author>Exiler</author><pubDate>Sun, 09 Dec 2007 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/freeatom/archive/2007/12/09/166445.html</guid><wfw:comment>http://www.blogjava.net/freeatom/comments/166445.html</wfw:comment><comments>http://www.blogjava.net/freeatom/archive/2007/12/09/166445.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/freeatom/comments/commentRss/166445.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeatom/services/trackbacks/166445.html</trackback:ping><description><![CDATA[类似Hibernate异常：<br />
%%%% Error Creating SessionFactory %%%%<br />
org.hibernate.MappingException: Could not read mappings from resource: <br />
这种错误出现的情况只有在人为改动了Hibernate生成的文件的时候出现。<br />
<br />
情况有两种<br />
1：hibernate.cfg.xml中，属性&lt;mapping resource="./Permission.hbm.xml" /&gt;里面"./Permission.hbm.xml"所指定的路径不正确，即改动了生成实体的配置文件的位置。<br />
2：Permission.hbm.xml中，&lt;class name="db_DAO.Permission" table="ACEGI_PERMISSION" schema="POSTTEST"&gt;其中属性class name="db_DAO.Permission"指定的Permission类名错误，即：改动了生成实体类的类名或者包名。<br />
<br />
如果上述两种情况改动后仍然报错，clean一下项目后OK 
<img src ="http://www.blogjava.net/freeatom/aggbug/166445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeatom/" target="_blank">Exiler</a> 2007-12-09 15:08 <a href="http://www.blogjava.net/freeatom/archive/2007/12/09/166445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JDK1.5中使用正则表达式的例子</title><link>http://www.blogjava.net/freeatom/archive/2007/04/21/112375.html</link><dc:creator>Exiler</dc:creator><author>Exiler</author><pubDate>Fri, 20 Apr 2007 17:21:00 GMT</pubDate><guid>http://www.blogjava.net/freeatom/archive/2007/04/21/112375.html</guid><wfw:comment>http://www.blogjava.net/freeatom/comments/112375.html</wfw:comment><comments>http://www.blogjava.net/freeatom/archive/2007/04/21/112375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeatom/comments/commentRss/112375.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeatom/services/trackbacks/112375.html</trackback:ping><description><![CDATA[<p>/**<br>&nbsp;* @author Solo<br>&nbsp;* <br>&nbsp;* 很久以前写的一道题目，昨天翻出来看了看，都有些忘记了，花了1个小时补上了注释<br>&nbsp;*&nbsp;对于学习在Java中使用正则表达式有点帮助<br>&nbsp;* 将一个保存有ip地址与地区对照关系的文本文件导入到数据库时，<br>&nbsp;* 应该将其中的某些空格替换成逗号（,），即对于如下格式的文本文件内容：<br>&nbsp;* 起始IP 结束IP 地区<br>&nbsp;* ---------------------------------------------------------------<br>&nbsp;* 61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧<br>&nbsp;* 61.54.231.246 61.54.231.246 河南省安阳市 未知地区<br>&nbsp;* 61.54.231.9 61.54.231.247 河南省安阳市 红日网吧<br>&nbsp;* 61.54.231.248 61.54.231.248 河南省安阳市 安阳师范学院<br>&nbsp;* 61.54.231.249 61.54.231.249 河南省安阳市 黑蜘蛛网吧(师范学院附近)<br>&nbsp;* 应转换成下面的这种格式：<br>&nbsp;* 61.54.231.245,61.54.231.245,河南省安阳市 新世纪网吧<br>&nbsp;* 61.54.231.246,61.54.231.246,河南省安阳市 未知地区<br>&nbsp;* 61.54.231.247,61.54.231.247,河南省安阳市 红日网吧<br>&nbsp;* 61.54.231.248,61.54.231.248,河南省安阳市 安阳师范学院<br>&nbsp;* 61.54.231.249,61.54.231.249,河南省安阳市 黑蜘蛛网吧(师范学院附近)<br>&nbsp;* 任务：<br>&nbsp;* 阅读String.replaceAll方法的帮助，以及它提供的相关超链接，<br>&nbsp;* 了解该方法的用法后，编写一个java程序来自动实现上面的正则表达式替换，<br>&nbsp;* 将a.txt替换后的结果保存到b.txt文件中。<br>&nbsp;* 另外，我们在实现ip地区查询系统时，使用的是类似如下的sql语法：<br>&nbsp;* select 地区 from ip表 where 用户ip&gt;起始IP and 用户ip&lt;结束ip<br>&nbsp;* 通过这条sql语句就可以查询出用户ip所对应的地区结果。由于用户ip与起始<br>&nbsp;* ip和结束ip的比较属于字符串比较，如果用户ip为9.1.1.1，那么它与<br>&nbsp;* 61.54.231.245比较的结果就是前者大于后者，因为用户ip的第一个字符&#8220;9&#8221;<br>&nbsp;* 大于61.54.231.245中的第一个字符&#8220;6&#8221;。<br>&nbsp;* 现在请你想出一种解决办法，让上面的sql语句能够返回正确结果。<br>&nbsp;* 请按这种思路在你的程序中增加进行这种改变的正则表达式替换。<br>&nbsp;*/</p>
<p>import java.io.*;<br>import java.util.regex.*;</p>
<p>public class Ip<br>{<br>&nbsp;&nbsp;&nbsp; private static void fileIO(File f)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strLine;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 调用执行本程序的操作系统的标准换行符，意味着跨平台<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String line = System.getProperty("line.separator");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 输入流<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream fis = new FileInputStream(f);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputStreamReader isr = new InputStreamReader(fis);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader br = new BufferedReader(isr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 输出流<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileOutputStream fos = new FileOutputStream("c://b.txt");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputStreamWriter osw = new OutputStreamWriter(fos);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedWriter bw = new BufferedWriter(osw);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 创建一个模式对象， 模式中编辑的正则表达式匹配分别是(200-249|250-255|001-199) 以匹配一个IP地址<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pattern pattern = Pattern<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .compile("((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 声明模式适配器<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Matcher matcher;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 循环读取文件中的每一行<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((strLine = br.readLine()) != null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * String调用replaceAll方法匹配一个正则表达式找到一个位置，然后替换成逗号<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strLine = strLine.replaceAll("(?&lt;=d)s+", ",");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 用适配器加载一行字符串，并匹配模式<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; matcher = pattern.matcher(strLine);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 如果在一行中能找到匹配的字符串则循环<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (matcher.find())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 取一行中第一个能匹配的子字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String buf = matcher.group();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 以"."分割成数字，然后分别补零，再合并<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strLine = matcher.replaceAll(change(buf));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 输入一行到文件，但不包括换行符<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bw.write(strLine);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 输入行分割符，即换行符<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bw.write(line);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 关闭输入流<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; br.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 关闭输出流<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bw.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 捕获原始文件未找到异常<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (FileNotFoundException e)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("原始文件未找到");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 捕获IO异常<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (IOException e)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; // 此方法用来接收一个分割出来的一个数字，将不足3位的补零后返回<br>&nbsp;&nbsp;&nbsp; private static String fill(String str)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 不足3位的补零<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (str.length() &lt; 3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = '0' + str;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 返回补零后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return str;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; private static String change(String buf)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 缓冲字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String temp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 结果返回字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String ret;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 以"."分割，存入字符串数组<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] str = buf.split(".");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 第一个数字不需要在前面加"."<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret = fill(str[0]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 从第2个数字开始，给每个数字前面分别再加上"."，并且不足的补零<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 1; i &lt; str.length; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 调用fill方法给不足3位的数字补零<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp = fill(str[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 每个数字加点后从新组装成一个<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret = ret + "." + temp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 返回结果字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ret;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; // 程序入口<br>&nbsp;&nbsp;&nbsp; public static void main(String[] args)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 读原始文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File f = new File("c://a.txt");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 将原始文件传入fileIO方法，按要求加工<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileIO(f);<br>&nbsp;&nbsp;&nbsp; }<br>}</p>
 <img src ="http://www.blogjava.net/freeatom/aggbug/112375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeatom/" target="_blank">Exiler</a> 2007-04-21 01:21 <a href="http://www.blogjava.net/freeatom/archive/2007/04/21/112375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>