`
ray_yui
  • 浏览: 220194 次
  • 性别: 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.6.jar

    Apache Commons IO是Apache软件基金会的一个开源项目,它提供了一系列实用的I/O操作工具,极大地简化了Java开发中与输入/输出相关的任务。其中,`commons-io-2.6.jar`是这个库的最新版本,已经在多个实际项目中得到...

    apache commons 开源工具列举

    2. **Apache Commons IO**: IO库是处理输入/输出操作的基石,它包含了文件读写、流操作、过滤器、转换器等功能。例如,FileUtils类提供了文件和目录的操作,如复制、移动、删除等,而IOUtils则有读取和写入流的便捷...

    apache.commons全套jar包下载

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目,它提供了大量Java类库,以帮助开发者处理常见的编程任务。这些类库弥补了Java标准库中的不足,为开发人员提供了一套强大且实用的工具。在本压缩包中,您...

    apache-commons所有jar包

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目,它提供了大量的 Java 类库,这些类库包含了许多实用的功能,极大地丰富了 Java 核心库的功能,为开发者提供了更强大的工具集。在Web开发中,Apache ...

    fileupload commons-io上传文件

    Apache Commons IO和Commons FileUpload两个库为开发者提供了强大的文件处理能力,特别是针对文件上传操作。这两个库是Java社区广泛使用的开源组件,它们简化了原本复杂的HTTP多部分请求解析过程。 Apache Commons ...

    Apache Commons 官方最近所有的jar包

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目集合,它提供了许多Java实用工具类,以增强Java标准库的功能。这些jar包是开发者在处理常见编程任务时的得力助手,涵盖范围广泛,包括数据结构、网络通信、...

    Apache Commons组件简介.ppt

    7. **IO**:Apache Commons IO 提供了一系列IO操作的辅助类,如文件复制、读写、流处理等,使得处理文件和I/O流变得更加简单和可靠。 8. **Net**:Apache Commons Net 提供了网络编程所需的工具类和协议实现,如FTP...

    org.apache.commons.io.jar

    Apache Commons IO是Java开发中常用的一个开源库,其核心组件是`org.apache.commons.io.jar`文件。这个库提供了一系列高度实用的I/O操作类,大大简化了对输入/输出流的处理,为开发者提供了丰富的功能和强大的工具。...

    org.apache.commons jar

    2. **Apache Commons IO**: 该模块主要关注输入/输出操作,提供文件操作、流处理、读写二进制或文本数据的工具类。例如,FileUtils 提供了文件的创建、复制、移动和删除等操作,IOUtils 可以用于读取和写入流,或者...

    Apache Commons官网下的jar包

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目集合,它提供了大量的 Java 类库,这些类库弥补了 Java 核心库中的一些不足,为开发者提供了实用且高效的工具和组件。Apache Commons 项目旨在简化开发过程...

    commons-io-1.3.1.jar

    `LICENSE.txt`文件包含了Apache Commons IO的许可协议,通常为Apache License Version 2.0,这是一个非常宽松的开源许可,允许自由使用、修改和分发代码,只需保持原有许可信息即可。 6. **使用方法**: 在Java...

    apache commons lang、io、collection源码与UT

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目,它提供了许多Java语言的实用工具类库。在这个压缩包中,我们重点关注 Lang、IO 和 Collection 三个模块的源码及相关的单元测试(UT)。这些模块是Java...

    commons-io-1.3.1.zip

    标题中的"commons-io-1.3.1.zip"是一个开源Java库,名为Apache Commons IO,版本为1.3.1。这个库包含了大量用于输入/输出操作的实用工具类,如文件读写、流处理、文件比较、过滤、转换等。在Java应用程序中,它能...

    apache commons

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目集合,它提供了许多Java库,旨在简化常见的编程任务。这些库通常包含实用工具类、数据结构、算法实现以及各种服务接口,大大增强了Java开发者的生产力。...

    org.apache.commons 全部包

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目,它提供了大量的 Java 类库,以弥补 Java 核心库中的不足。"org.apache.commons" 是这个项目的主要命名空间,包含了许多子包,用于实现各种实用功能。在这...

    commons-io-2.3.jar

    总的来说,Apache Commons IO 2.3.jar是一个强大且实用的工具集,为Java开发人员提供了处理IO操作的便利性,减少了编写样板代码的时间,提高了代码的可读性和维护性。在实际开发中,无论是简单的文件操作还是复杂的...

    org.apache.commons

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目,它为 Java 开发者提供了一系列实用工具类库。在 Android 开发中,`org.apache.commons` 包常常被用于解决一些常见问题,提高开发效率。这个包下包含了很...

    commons-io-1.4

    在实际开发中,Apache Commons IO 通常与其他流行的开源库结合使用,如Spring框架、Hibernate ORM等,以提供全面的解决方案。其丰富的功能和良好的社区支持,使得Apache Commons IO 成为了Java开发者不可或缺的工具...

    Commons-io-2.11.0.jar

    Apache Commons IO是Apache软件基金会的一个开源项目,它提供了一组用于处理输入/输出操作的Java工具类,旨在简化文件操作、流处理和其他与I/O相关的任务。commons-io-2.11.0.jar是这个项目在版本2.11.0时的jar文件...

Global site tag (gtag.js) - Google Analytics