【小家java】Java之Apache Commons-IO使用精讲(FileUtils、IOUtils、FileFilter全覆盖)(下)

简介: 【小家java】Java之Apache Commons-IO使用精讲(FileUtils、IOUtils、FileFilter全覆盖)(下)

FileUtils


FileUtils类包含使用File对象的工具方法。包括读写、复制和比较等等。


    public static void main(String[] args) throws IOException {
       File file = new File("/application.properties");
       List<String> lines = FileUtils.readLines(file, "UTF-8");
       System.out.println(lines);
   }


  • byteCountToDisplaySize:挺人性化的一个方法,可以吧字节数组的长度,转化成用户良好的单位,如EB、GB、MB、KB、bytes等等


    public static void main(String[] args) throws Exception {
        try (InputStream in1 = new URL("http://commons.apache.org").openStream()) {
            String s = FileUtils.byteCountToDisplaySize(IOUtils.toByteArray(in1).length);
            System.out.println(s); //26 KB
        }
    }


checksum、checksumCRC32:类似于校验MD5和。如long csum = FileUtils.checksum(file, new CRC32()).getValue();,一般下载来一个文件后,为了安全可以校验一把


cleanDirectory:把指定文件夹里面的东西全部删除掉


contentEquals:依赖于IOUtils.contentEquals


convertFileCollectionToFileArray:把File的集合转换为File的数组


copyDirectory(srcDir,destDir,FileFilter):吧src的文件夹内容copy(或者剪切)到dest里面,可以使用FileFilter过滤


copyFile:可以一个文件copy到另外一个文件,也可以copy到outputStream里面。


copyFileToDirectory:


copyInputStreamToFile:


copyURLToFile:


deleteDirectory:递归删除这个文件夹里面的所有东西(包括文件夹自己)


deleteQuietly:既可以删除文件,也可以递归删除文件夹


directoryContains:指定文件夹下是否包含某个文件


forceDelete:强制删除一个文件。如果是文件夹,也会递归删除掉。


forceMkdir:强制创建一个目录


getTempDirectoryPath:拿到IO的临时文件夹路径


isFileNewer、isFileOlder:判断该文件的最后修改时间,是否新于给定的Date时间(或者给定文件的lastModified)


listFiles、listFilesAndDirs:拿到指定文件夹下所有的文件


moveDirectory、moveFile


openInputStream:效果同new FileInputStream


openOutputStream:同上


readFileToByteArray、readFileToString、readLines


sizeOf、sizeOfAsBigInteger、:拿到文件/文件夹的大小


sizeOfDirectory、sizeOfDirectoryAsBigInteger


toFile(URL url):吧网络上的资源字节编程一个文件


write、writeByteArrayToFile、writeLines、writeStringToFile:把传入的data串写入到File里面

FilenameUtils


FilenameUtils类包含工具方法不需要使用File对象就可以操作文件名。该类致力于屏蔽Unix和Windows之间的不同,避免这些环境之间的转换(例如,从开发到生产)。 开发在windows、生产在Linux


一般使用较少,这里不做过多介绍.

FileSystemUtils:2.6版本已经废弃。推荐使用JDK自己的FileStore代替


LineIterator:行迭代器


提供灵活的方式使用一个基于行的文件。可以直接,或通过FileUtils或IOUtils的工厂方法创建实例。推荐使用模式:


备注:也是需要close的

Filefilter:包含IOFileFilter、FilenameFilter等。可以在copy、remove等等操作的时候,对文件进行各种过滤行为


此包自带一些常用的Filter如:AgeFileFilter、CanReadFileFilter、CanWriteFileFilter、DirectoryFileFilter、EmptyFileFilter、HiddenFileFilter等等。基本能满足我们所有需求


比较器:比如按照文件名倒序、文件大小倒序这种需求,用此比较器会非常方便。也内置了很多的比较器实现


如:SizeFileComparator、ReverseComparator、LastModifiedFileComparator、ExtensionFileComparator等等


org.apache.commons.io.input和org.apache.commons.io.output包含各种有用、实用的流实现。


1.空输出流——默默的吸收、消化发给它的所有数据。


2.计算流——统计传递的字节数。(CountingInputStream、CountingOutputStream,这个挺好用的)


3.代理流——委托恰当的方法代理。


CopyUtils:已经过期,请使用IOUtils代替

相关文章
|
2月前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
64 9
|
3月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
109 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
3月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
55 1
|
3月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
54 1
|
3月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
131 1
|
3月前
|
Java
Java 中 IO 流的分类详解
【10月更文挑战第10天】不同类型的 IO 流具有不同的特点和适用场景,我们可以根据具体的需求选择合适的流来进行数据的输入和输出操作。在实际应用中,还可以通过组合使用多种流来实现更复杂的功能。
79 0
|
3月前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
47 0
|
16天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
74 17
|
27天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
12天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题

热门文章

最新文章

推荐镜像

更多