首页 > 其他分享 >提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

时间:2023-06-08 11:05:43浏览次数:40  
标签:文件 IO ApacheCommonsIO commons 汉化 过滤器 io apache org


       幸运的是,Apache Commons IO等开源组件已经帮我们实现了。
       我们可以不用重复造轮子了。


1.资料地址

1.1官方网站http://commons.apache.org/proper/commons-io/

1.2下载地址http://commons.apache.org/proper/commons-io/download_io.cgi

2.简要介绍(官方英文的翻译版)

2.1版本说明-Release Notes
Commons IO是一个Java工具类库的包,类似于java.io包。
这个包中的类被认为非常标准和高度复用,以至于值得加入到java.io包中。

Commons IO库包含了工具类、流实现、文件过滤器、文件比较器、字节序转换等。

2.2概要-Overview

Commons IO是一个帮助开发IO功能的工具库。
主要包括了以下6个领域:

①工具类-使用静态方法执行通用的任务。
②输入-有用的(字节)输入流(Input Stream)和(字符)读取器(Reader)实现。
③输出-有用的(字节)输出流(Output Stream)和(字符)书写器(Writer)实现。
④过滤器-多种多样的的文件过滤器(java.io.FileFilter,java.io.FilenameFilter)实现。
⑤比较器-多种多样的文件比较器(java.util.Comparator)实现。
⑥文件监听器-一个用来监听文件系统事件的组件。

原文出处:Release Notes来自Release-Notes.txt,Overview来自官方网站。

3.详细介绍

3.1工具类


FileUtils:

通用的文件操作工具。
这个类提供了以下领域的功能:
向文件中写入 ;
从文件中读取 ;
创建目录,包括父路径;
拷贝文件和目录;
删除文件和目录;
文件和URL的相互转换;
通过过滤器和扩展名,列出文件和目录;
比较文件内容;
文件最后修改日期;
计算checksum。

FilenameUtils:通用的文件名和文件路径操作工具类。从基于Windows开发环境的机器,移动文件到
基于Unix的生产环境机器时,你可能会遇到关于文件名的问题。这个类的目标就是帮助你避免这些问题。

FileSystemUtils:通用的文件系统工具类。
这个类提供静态的工具方法,为实现通用的文件系统功能(JDK java.io.File没有提供的) 。
目前提供的功能仅限于:获得驱动器的剩余空间。

IOUtils:通用的IO流操作工具类。
这个类提供了输入/输出操作的静态工具方法。

closeQuietly – 这些方法关闭流,忽略null和异常 ;
toXxx/read – 这些方法从流中读取数据 ;
write – 这些方法向流中写入数据;
copy – 这些方法拷贝数据从一个流到另外一个;
contentEquals – 这些方法比较2个流中的内容。

ThreadMonitor:监听一个线程,当线程超时的时候打断它。

更多介绍,请参考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/package-summary.html

3.2输入流


BOMInputStream:第1个字节写入BOM字节的流。
BrokenInputStream:损坏的输入流。该流的任何方法都会抛出IOException,主要用来测试“错误处理代码”的正确性。
CountingInputStream:一个字节输入流的包装类,用来统计经过该流的字节数。
CharSequenceInputStream:可以从String, StringBuffer, StringBuilder和CharBuffer读取数据的字节流。
CharSequenceReader:以从String, StringBuffer, StringBuilder和CharBuffer读取数据的字符流。

该流的一个典型的用途是调试,确保读取的数据是期待的。

更多介绍,请参考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/input/package-summary.html

3.3输出流


BrokenOutputStream:损坏的输出流。该流的任何方法都会抛出IOException,主要用来测试“错误处理代码”的正确性。
CountingOutputStream:一个字节输出流的包装类,用来统计经过该流的字节数。
StringBuilderWriter:Writer的实现类,输出数据到StringBuilder。
这个实现类是StringWriter之外的另一种选择,提供非同步的实现,为了更好的性能。
多线程环境的安全用途,应该使用StringWriter。
WriterOutputStream:OutputStream实现类,使用指定的编码,传送字节数据到字符流,写入结果流到Writer。

更多介绍,请参考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/output/package-summary.html

3.4过滤器


特别说明:"过滤/Filter"这个词存在歧义,本处的意思是"保留符合条件的文件",而不是"排除符合条件的文件"。

AgeFileFilter:基于cutoff时间的文件过滤器,能够过滤任何时间更新/更老/相等的文件。
EmptyFileFilter:过滤空的文件和目录。
SizeFileFilter:基于大小的过滤器,能够过滤小于/等于/大于指定大小的文件。
NameFileFilter:过滤文件名满足一定条件的文件。

CanReadFileFilter:这个过滤器接受“可读”的文件。
CanWriteFileFilter:这个过滤器接受“可写”的文件。

DirectoryFileFilter:这个过滤器接受“目录”文件。
FileFileFilter:这个过滤器接受“文件,非目录”文件。
HiddenFileFilter:这个过滤器接受“隐藏”文件。

AndFileFilter:提供条件"且"逻辑,如果每一个filter否返回true,则返回true。
类似的还有:OrFileFilter/NotFileFilter。

RegexFileFilter:基于正则表达式的过滤器。
WildcardFileFilter:基于通配符的过滤器。

PrefixFileFilter:过滤文件名"前缀"满足一定条件的文件。
SuffixFileFilter:过滤文件名"后缀"满足一定条件的文件。

更多介绍,请参考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/filefilter/package-summary.html

3.5比较器


DefaultFileComparator: 使用默认的File#compareTo(File)方法比较。
CompositeFileComparator:使用一系列委托比较器比较。
DirectoryFileComparator:使用File#isDirectory()方法比较。
ExtensionFileComparator:根据文件的"扩展名"比较。
LastModifiedFileComparator: 根据最后修改日期/时间比较。
NameFileComparator:根据文件名比较。
PathFileComparator:根据文件路径比较File#getPath()。
ReverseComparator:逆序比较器,把比较结果"倒过来"。
SizeFileComparator:根据文件的长度和大小比较 File#length()和FileUtils#sizeOfDirectory(File)。
更多介绍,请参考
http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/comparator/package-summary.html

3.6文件监听器


FileAlterationListener:接收文件系统变化事件的监听器。
FileAlterationMonitor:文件变化监控器。
产生一个监控线程,以一定的时间间隔,触发注册的FileAlterationObserver。

FileAlterationObserver:文件变化观察者,代表某一根目录下的文件状态,检查文件系统,通知listener创建、改变和删除事件。

更多介绍,请参考

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/monitor/package-summary.html

4.一个经典的例子-SpringMVC上传文件

@RequestMapping(value = "uploadLoginSplash", method = RequestMethod.POST)
 public String uploadLoginSplash(HttpServletRequest request, @RequestParam("file") MultipartFile file)
 throws IOException { if (!file.isEmpty()) {
    String realPath = request.getSession().getServletContext().getRealPath(SPLASH);   //这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉
    FileUtils.copyInputStreamToFile(file.getInputStream(), new File(realPath, SPLASH_JPG));
    #org.apache.commons.io.FileUtils
     }    return "manager/setting/settingManager";
 }

5.总结
   ApacheCommonsIO等Apache Commons公共组件,可以大大提高咱们的开发效率,减少软件Bug和提高软件质量, 非常值得在项目中使用。


参考资料:commons-io-2.2-javadoc.jar和commons-io-2.2-sources.jar


标签:文件,IO,ApacheCommonsIO,commons,汉化,过滤器,io,apache,org
From: https://blog.51cto.com/fansunion/6438247

相关文章

  • net-core-PeriodicTimer
    一在.NET6中引入了新Timer:System.Threading.PeriodicTimer,它和之前的Timer相比,最大的区别就是新的PeriodicTimer事件处理可以方便地使用异步,消除使用callback机制减少使用复杂度。publicclassBackgroundTask{privateTask?_timerTask;privatereadonlyPeriodic......
  • iOS系统安全机制
    引言在开发过程中,经常会遇到这么一些问题:修改App结构后无法运行不能直接读取其他应用程序程序每次运行地址都不一样系统升级了不允许降级带着这些问题,我们来学习一下,iOS系统提供的安全机制。iOS系统安全架构  上图是苹果官方的iOS系统安全架构图,他分为两个部分,第一个部分......
  • golang导入私有仓库报错:“server response: not found:xxx: invalid version: git ls
    1.问题:goget导入私有仓库报错➜goget"devops.gitlab.xxx.com/test/kafka-utils"go:devops.gitlab.xxx.com/test/[email protected]:verifyinggo.mod:devops.gitlab.xxx.com/testo/[email protected]/go.mod:readinghttps://goproxy.cn/sumdb/sum.golang.org/......
  • 深入了解 Cookie、Session 和 PHP 在 Web 开发中的用户身份验证和会话管理
    在Web开发中,用户身份验证和会话管理是至关重要的方面。本文将探讨Cookie和Session的概念及其在用户身份验证和会话管理中的作用。我们还将介绍一些关于会话安全性和保护的最佳实践,并讨论PHP在Web开发中的角色。1.什么是Cookie和Session?1.1CookieCookie是服务器发送......
  • 6-8|如何使用Python语言开发IOS混淆工具
    在iOS开发中,混淆工具主要用于保护代码的安全性,避免别人通过反编译等手段获取到关键代码。Python语言是一门高效、易于编写和调试的开发语言,可以用它来编写iOS混淆工具。下面是一个简单的示例代码,用Python实现对Objective-C代码进行简单的混淆。```pythonimportosimportrandom......
  • python之minio基础操作(二)
    fromminioimportMiniofrommultiprocessingimportProcessimporttimedefupload_file():#创建minio客户端client=Minio(endpoint="xxx.xxx.xxx.xxx:xxx",access_key='xxx',secret_key='x......
  • python之minio基础操作(一)
    fromminioimportMiniofile_name='3e09ca66d9444906935b0171e26891f1.mp4'file_path=r'E:\集成资料\视频素材'barrel="testdata"defupload_file():#创建minio客户端client=Minio(endpoint="xxx.xxx.xxx.xxx:xxxxx"......
  • Nutika 打包 docx 库 出现 docx.opc.exceptions.PackageNotFoundError: Package not f
    docx.opc.exceptions.PackageNotFoundError:Packagenotfoundat重现用以下命令打包exe:nuitka--standalone--show-memory--show-progress--nofollow-imports--enable-plugin=pyqt5--follow-import-to=utils,src--output-dir=out--windows-icon-from-ico=./termius_1.......
  • PHP Xdebug 3 和 Visual Studio Code
    Xdebug3相对于Xdebug2改动挺大的。在php.ini里下面的设置就够了,不需要多余的。默认调试端口9003 [XDebug]zend_extension="php_xdebug.dll"xdebug.mode=debugxdebug.start_with_request=yesxdebug.idekey=VSCODEhttps://community.localwp.com/t/local-xdebu......
  • spring-boot-starter-validation数据校验
    依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency> beanimportboot.annotation.Status;importlombok.AllArgsConstructor;import......