论apache重复造的轮子
2016-07-04 17:07
375 查看
今天分享一下apache所重复造的轮子(FileUtils.readLines)
在org.apache.cxf.helpers 这个包下有个工具类也叫做FileUtils,和我们平时常用的 org.apache.commons.io 下面的工具类名称一致。那么在开发中使用导包ctrl+shift+o 快捷键导包,非常容易引用错误包,如果不涉及到字符集编码还好,否则容易走弯路。今天分析一下 这个同名工具中的一个同名方法:readFile(File file)
public static List readLines(File file) throws IOException
l两个类中的方法明、参数类型、个数、返回值、异常类型完全一致。
但是 io包下的 FileUtils 进行了重写,同时提供了
public static List readLines(File file, String encoding) throws IOException 这个方法,有了这个方法为编程提供了便捷。
比较一下具体实现:(比较简单)
cxf readLines 使用的是FileReader 读取文件 ,传入BufferedReader中,然后循环变量出每一行存入list ,然后返回。public static List<String> readLines(File file) throws Exception { if (!file.exists()) { return new ArrayList<String>(); } BufferedReader reader = new BufferedReader(new FileReader(file)); List<String> results = new ArrayList<String>(); try { String line = reader.readLine(); while (line != null) { results.add(line); line = reader.readLine(); } } finally { reader.close(); } return results; }
io包下的readFile方法逻辑更为严谨,明确判断了输入参数是文件,还是文件夹等。具体实现是使用的是同包下 IOUtils 提供的readLines方法这个方法中进行了 输入参数字符集的判断,如果字符集参数为空则使用InputStreamReader(input) 完成文件行读取,存入list返回。 如果字符集参数不为空 则使用了 InputStreamReader(InputStream in, String charsetName)
public static List<String> readLines(File file, String encoding) throws IOException { InputStream in = null; try { in = openInputStream(file); return IOUtils.readLines(in, encoding); } finally { IOUtils.closeQuietly(in); } } public static List<String> readLines(InputStream input, String encoding) throws IOException { if (encoding == null) { return readLines(input); } else { InputStreamReader reader = new InputStreamReader(input, encoding); return readLines(reader); } } public static List<String> readLines(Reader input) throws IOException { BufferedReader reader = new BufferedReader(input); List<String> list = new ArrayList<String>(); String line = reader.readLine(); while (line != null) { list.add(line); line = reader.readLine(); } return list; }
回到主题,apache为什么这么做呢?
1:减少依赖
2:完全两个团队开发相互不知道对方有轮子
3:。。。
相关文章推荐
- RewriteCond和13个mod_rewrite应用举例Apache伪静态
- php获取apache认证过的当前用户
- apache bench测试
- Eclipse的java代码出错:The import org.apache cannot be resolved
- XAMPP Apache 配置多端口和多域名方法
- 沈逸老师ubuntu速学笔记(2)-- ubuntu16.04下 apache2.4和php7结合编译安装,并安裝PDOmysql扩展
- 欢迎使用CSDN-markdown编辑器
- “Cannot load php5apache2_4.dll into server”问题的解决方法
- “org/apache/commons/logging/LogFactory”错误的解决方式
- APACHE+MYSQL+PHP协同服务
- 架构设计:系统间通信(38)——Apache Camel快速入门(下1)
- [无异常,才正常]java.lang.ClassNotFoundException: org.apache.catalina.startup.VersionLoggerListener
- Spring Cache 和 Apache Shiro整合的超级深坑
- solr 初探
- no segments* file found in org.apache.lucene.store.SimpleFSDirectory
- Linux安装配置apache
- 《Apache Cookbook》学习笔记
- apache服务器外网不能访问的问题
- 【Shiro】Apache Shiro架构之权限认证(Authorization)
- Apache POI 第二讲之对Excel常见操作