一直都在看BlogJava上的文章,从众多的Java爱好者那里学到了不少的知识,但是却没有在自己blog上发过文章。渐渐地,觉得这种只会索取不作贡献的行为是不行的,请原谅我有点害羞吧,哈哈。所以从现在开始我会陆续地在blog上面发表关于Java、软件开发的文章,希望大家能多多指教。
闲话说到这,近来在阅读一本关于Jakarta Common的书,就写一下关于Jakarta Common这一系列工具的文章吧。什么是Jakarta Common呢?它是一系列Apache的子项目,包括Collections、XML、JavaBean、IO等一系列增强Java的工具类,在许多Apache的项目中都可以看到它们的身影,如Struts。现在介绍的是Common IO,这个包主要使IO与网络之间编程更加方便,编码更加清晰。
其中CopyUtils和IOUtils提供一系列静态方法使到stream和Reader/Writer和String之间的转变更加容易希望从一个InputStream将读取的流转变为FileWriter写入一个文件,只需要使用CopyUtils的copy方法,这个方法有多个重载版本,这里接受一个InputStream的对象和一个FileWriter的对象。
public void performCopying(){
Writer writer=null;
InputStream inputStream=null;
try {
writer=new FileWriter("test.dat");
inputStream=getClass().getResourceAsStream("./test.resource");
CopyUtils.copy(inputStream,writer);
} catch (IOException e) {
e.printStackTrace();
}finally{
IOUtils.closeQuietly(writer);
IOUtils.closeQuietly(inputStream);
}
}
最后很方便的是,使用IOUtils的closeQuietly静态方法就可以方便地关闭资源。同样地,从一个网络上的地址上获得网页内容到字符串也是非常地直观。
public void urlToString(){
URL url=null;
InputStream inputStream=null;
try {
url=new URL("http://www.21cn.com");
inputStream=url.openStream();
String contents=IOUtils.toString(inputStream);
System.out.println(contents);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
使用IOUtils的toString的一个重载版本就可以方便地做到上述功能。Common IO还有许多有用的功能,在以后的文章会继续探讨。