﻿<?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-JAVA~~~i love you-随笔分类-Jakarta Common学习</title><link>http://www.blogjava.net/ayato/category/13709.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:26:00 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:26:00 GMT</pubDate><ttl>60</ttl><item><title>Common IO学习</title><link>http://www.blogjava.net/ayato/archive/2006/08/02/61407.html</link><dc:creator>it民工</dc:creator><author>it民工</author><pubDate>Wed, 02 Aug 2006 14:11:00 GMT</pubDate><guid>http://www.blogjava.net/ayato/archive/2006/08/02/61407.html</guid><wfw:comment>http://www.blogjava.net/ayato/comments/61407.html</wfw:comment><comments>http://www.blogjava.net/ayato/archive/2006/08/02/61407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ayato/comments/commentRss/61407.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ayato/services/trackbacks/61407.html</trackback:ping><description><![CDATA[         一直都在看BlogJava上的文章，从众多的Java爱好者那里学到了不少的知识，但是却没有在自己blog上发过文章。渐渐地，觉得这种只会索取不作贡献的行为是不行的，请原谅我有点害羞吧，哈哈。所以从现在开始我会陆续地在blog上面发表关于Java、软件开发的文章，希望大家能多多指教。<br />         闲话说到这，近来在阅读一本关于Jakarta Common的书，就写一下关于Jakarta Common这一系列工具的文章吧。什么是Jakarta Common呢？它是一系列Apache的子项目，包括Collections、XML、JavaBean、IO等一系列增强Java的工具类，在许多Apache的项目中都可以看到它们的身影，如Struts。现在介绍的是Common IO，这个包主要使IO与网络之间编程更加方便，编码更加清晰。<br />         其中CopyUtils和IOUtils提供一系列静态方法使到stream和Reader/Writer和String之间的转变更加容易希望从一个InputStream将读取的流转变为FileWriter写入一个文件，只需要使用CopyUtils的copy方法，这个方法有多个重载版本，这里接受一个InputStream的对象和一个FileWriter的对象。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> performCopying(){<br />        Writer writer</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br />        InputStream inputStream</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            writer</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileWriter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test.dat</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            inputStream</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">getClass().getResourceAsStream(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">./test.resource</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            CopyUtils.copy(inputStream,writer);<br />        } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IOException e) {<br />            e.printStackTrace();<br />        }</span><span style="COLOR: #0000ff">finally</span><span style="COLOR: #000000">{<br />            IOUtils.closeQuietly(writer);<br />            IOUtils.closeQuietly(inputStream);<br />        }<br />    }</span></div><br />最后很方便的是，使用IOUtils的closeQuietly静态方法就可以方便地关闭资源。同样地，从一个网络上的地址上获得网页内容到字符串也是非常地直观。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> urlToString(){<br />        URL url</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br />        InputStream inputStream</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br />        <br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            url</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> URL(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://www.21cn.com</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            inputStream</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">url.openStream();<br />            String contents</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">IOUtils.toString(inputStream);<br />            System.out.println(contents);<br />        } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (MalformedURLException e) {<br />            e.printStackTrace();<br />        } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IOException e) {<br />            e.printStackTrace();<br />        }<br />    }</span></div><br />使用IOUtils的toString的一个重载版本就可以方便地做到上述功能。Common IO还有许多有用的功能，在以后的文章会继续探讨。<img src ="http://www.blogjava.net/ayato/aggbug/61407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ayato/" target="_blank">it民工</a> 2006-08-02 22:11 <a href="http://www.blogjava.net/ayato/archive/2006/08/02/61407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>