`
ray_yui
  • 浏览: 216633 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

开源工具 — Apache Commons IO

阅读更多

开源工具系列文章:
      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操作
14
2
分享到:
评论
1 楼 uniqueQ 2014-02-27  
楼主写文章喜欢写一个系列的

相关推荐

    commons-io-2.0.1大全

    Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,包含了最新的commons-io-2.0.1-bin,commons-io-2.0.1-src,commons-io-2.0.1-doc

    commons-io-2.6.zip

    commons-io 是 Apache 开源基金组织提供的一组有关 IO 操作的类库,可以挺提高 IO 功能开发的效率。commons-io 工具包提供了很多有关 IO 操作的类

    orgapache_commons

    org.apache.commons的jar包,Apache Commons包含了很多开源的工具。 包括commons-beanutils-1.8.0-bin、commons-betwixt-0.8、commons-cli-1.1、commons-codec-1.3、commons-collections-3.2.1-bin、commons-...

    commons-fileupload、commons-io文件

    浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。

    AccessConverter:Microsoft Access数据库转换工具,用于转换旧的和新的Acc-开源

    依赖关系JDK 1.8 Apache Commons IO 2.5(commons-io-2.5)Apache Commons Lang 2.6(commons-lang-2.6)Apache Commons Lang 3.6(commons-lang3-3.6)Apache Commons Logging 1.2(commons-logging-1.2)SQLite ...

    Java Commons 包学习

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。 包含的组件有BeanUtils、Codec、Collections、Lang、IO、FileUpLoad等等。本文档 帮助Java开发者学习相关内容

    java开发常用jar包

    Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-collections.jar Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons-lang.jar Apache ...

    java开源包10

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    Java开发常用jar包

    1.commons-beanutils.jar...12.commons-DbUtils.jar:Apache组织提供的一个资源JDBC工具类库,它是对JDBC的简单封装,对传统操作数据库的类进行二次封装,可以把结果集转化成List。 13.commons-Email.jar: 提供开源的API

    word源码java-HFUTUtils:这是一个工具程序集合,方便我们平时对数据进行预处理。针对文本处理的内容较多。包括分词(集成了张华平分

    这是一个工具程序集合,方便我们平时处理数据。针对文本处理的内容较多。 详细的使用方法和案例参考: [TOC] -----------使用方法----------- 可以直接看源码文件,也可以直接下载jar包引入到工程中。注意,本项目...

    java开源包6

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包9

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    16 个超级实用的 Java 工具类

    org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块 toString:转换IO流、 Uri、 byte[]为String copy:IO流数据复制,从输入流写到输出流中,最大

    java开源包8

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包1

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包2

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包3

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包5

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包11

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包7

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

Global site tag (gtag.js) - Google Analytics