设为首页 收藏本站
查看: 437|回复: 0

[经验分享] 开源工具 — Apache Commons IO

[复制链接]

尚未签到

发表于 2017-1-2 06:38:58 | 显示全部楼层 |阅读模式
开源工具系列文章:
      Apache Commons Lang(1):http://ray-yui.iteye.com/blog/1953020
      Apache Commons Lang(2):http://ray-yui.iteye.com/blog/1958319
      Apache Commons BeanUtils:http://ray-yui.iteye.com/blog/1961451
      Apache Commons Collections:http://ray-yui.iteye.com/blog/2021484
      Apache Commons IO:http://ray-yui.iteye.com/blog/2023034


      在Java当中,由于IO架构采用了众多装饰者,令到JavaIO操作可谓是繁杂无比,特别经常需要访问文件系统,操作文件夹/文件,读取字符流转换成字符串等操作,都是一些重复性的操作.所以本着面向对象不重复发明轮子的态度,应该把这些重复性的操作抽取出来形成通用的工具,而Apache提供的common IO组件则早已帮我们完成了一切.


public class TestMain {
public static final String TEST_DIRECTORY_PATH_1 = "D:/testDirectory1";
public static final String TEST_DIRECTORY_PATH_2 = "D:/testDirectory2";
public static final File DIRECTORY_1 = new File(TEST_DIRECTORY_PATH_1);
public static final File DIRECTORY_2 = new File(TEST_DIRECTORY_PATH_2);
public static final String TEST_FILE_PATH_1 = "D:/testDirectory1/test.txt";
public static final String TEST_FILE_PATH_2 = "D:/testDirectory2/test.txt";
public static final File FILE_1 = new File(TEST_FILE_PATH_1);
public static final File FILE_2 = new File(TEST_FILE_PATH_2);
@Test
public void testFileUtils() throws IOException {
String fileSize = FileUtils.byteCountToDisplaySize(1024 * 1024);
// 转换文件长度单位
Assert.assertEquals("1 MB", fileSize);
// 清空某目录下的所有目录,含文件夹和文件
FileUtils.cleanDirectory(DIRECTORY_1);
// 如字面意思
FileUtils.convertFileCollectionToFileArray(null);
// 将参数1目录下的全部内容复制到参数2目录
FileUtils.copyDirectory(DIRECTORY_1, DIRECTORY_2);
// 将参数1目录整个复制到参数2目录下
FileUtils.copyDirectoryToDirectory(DIRECTORY_1, DIRECTORY_2);
// copy參數1文件到參數2
FileUtils.copyFile(FILE_1, FILE_2);
// copy參數1文件到參數2目錄下
FileUtils.copyFileToDirectory(FILE_1, DIRECTORY_1);
// copy URL中文件到參數2
FileUtils.copyURLToFile(new URL("http://www.xxx.com/a.html"), FILE_1);
// 强制删除文件
FileUtils.forceDelete(FILE_1);
// 将文件转为InputStrem,对应有openOutStream方法
FileUtils.openInputStream(FILE_1);
FileUtils.openOutputStream(FILE_1);
// 读取文件转为字节数组
FileUtils.readFileToByteArray(FILE_1);
// 读取文件转换为String类型,方便文本读取
FileUtils.readFileToString(FILE_1, "UTF-8");
// 返回目录的大小
FileUtils.sizeOfDirectory(DIRECTORY_1);
// 写字符串到参数1文件中
FileUtils.writeStringToFile(FILE_1, "test", "UTF-8");
}
}


      除了提供对文件操作的便利,对文件名的操作亦有诸多方法可供调用


public class TestMain {
public static final String FILE_NAME = "D:/Hello/World.txt";
@Test
public void testFileUtils() throws IOException {
// 获取文件后缀名
String extensionName = FilenameUtils.getExtension(FILE_NAME);
Assert.assertEquals("txt", extensionName);
// 获取文件路径,忽略分割符 /
String fullPath1 = FilenameUtils.getFullPathNoEndSeparator(FILE_NAME);
Assert.assertEquals("D:/Hello", fullPath1);
// 获取文件路径,不忽略分隔符
String fullPath2 = FilenameUtils.getFullPath(FILE_NAME);
Assert.assertEquals("D:/Hello/", fullPath2);
// 获取文件名,不包含后缀
String baseName = FilenameUtils.getBaseName(FILE_NAME);
Assert.assertEquals("World", baseName);
// 获取文件名,含后缀
String name = FilenameUtils.getName(FILE_NAME);
Assert.assertEquals("World.txt", name);
// 获取盘符
String prefix = FilenameUtils.getPrefix(FILE_NAME);
Assert.assertEquals("D:/", prefix);
// 通配符匹配
Boolean isMatch = FilenameUtils.wildcardMatch(FILE_NAME, "D:/Hello*");
Assert.assertEquals(true, isMatch);
}
}


     Apache common IO包令我們从繁杂的文件操作和IO操作中得以解脱,本着不重复发明轮子的面向对象理念.我们应该遵从拿来主义,直接使用一些已经公认的common组件例如apache google的通用common包來減少我們的开发时间,提高我们的开发效率..但由于apache的common包使用的是阻塞IO,若对性能要求苛刻或想追求性能极致的系统,还是建议自己编写基于Buffer和Chaneel的NIO来进行IO操作

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322494-1-1.html 上篇帖子: apache配置端口目录 下篇帖子: Apache的使用点滴
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表