Path和Files
JDK设计的File类既负责路径信息,又负责操作具体文件(创建,删除等等),Apache的包FilenameUtils封装了很多根据字符串操作文件路径的方法(比如转Linux格式,拼接文件路径等等),非常有用,FilenameUtils不会和具体文件打交道,所有功能根据字符串解析完成,你可以发现是从技术视角划分出来的一个类。
JDK1.7之后有了Path和Files,你会发现Path部分取代了Apache的包FilenameUtils,并且进行了更合理的设计,Path和Files类是根据功用来划分的,Path类封装了和路径相关的功能,Files类负责操作文件;但Path类并不局限于通过字符串来操作路径,如果需要是可以和实际文件打交道的,比如toRealPath方法,如果文件不存在,是回抛异常的;体验很深的一点是,整个设计并不是从技术上设计,采用的是DDD的领域驱动的思想,更重视功用。