FileUtils API

FileUtils API

引入jar: commons-io-2.4.jar

一、概述

这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作,几乎都可以在这个框架里面找到。 非常的好用。

二、FileUtils读APIJava代码 public static void main(String[] args) throws Exception { //读取文本文件的所有行到一个集合 List lines=FileUtils.readLines(new File("D:/fileUtis/aa.txt"),"utf-8"); for (String s : lines) { System.out.println(s); } //读取文件内容到一个字符串 String str = FileUtils.readFileToString(new File("D:/fileUtis/aa.txt"), "utf-8"); System.out.println(str); //读取文件到一个byte数组 FileUtils.readFileToByteArray(new File("D:/fileUtis/aa.txt")); }

三.FileUtils写APIJava代码 public static void main(String[] args) throws Exception { //将字符写入到一个文件,文件不存在会创建;第三个参数:true:追加,false:覆盖 FileUtils.write(new File("D:/fileUtis/targetFile/aa.txt"),"aa",false); //根据指定编码将字符写入到一个文件,文件不存在会创建;会覆盖 FileUtils.write(new File("D:/fileUtis/targetFile/bb.txt"),"ickes","utf-8"); //根据指定编码将字符写入到一个文件,文件不存在会创建;会覆盖 FileUtils.write(new File("D:/fileUtis/targetFile/cc.txt"),"ickes","utf-8",true); //将一个字符串集合根据指定的分隔符写入到文件中,第四个参数是分隔符 List ss = new ArrayList<>(); ss.add("aa");ss.add("bb"); FileUtils.writeLines(new File("D:/fileUtis/targetFile/dd.txt"),"utf-8",ss, ","); //将一个字符串集合,一行一行写入到文件中, FileUtils.writeLines(new File("D:/fileUtis/targetFile/ee.txt"), "utf-8", ss,true); }

四、FileUtils删除APIJava代码 public static void main(String[] args) throws Exception { //删除一个目录和他的所有子目录,如果文件或者目录不存在会抛出异常 FileUtils.deleteDirectory(new File("D:/fileUtis/targetFile/")); //删除一个目录或者一个文件,如果这个目录或者目录不存在不会抛出异常 FileUtils.deleteQuietly(new File("D:/fileUtis/targetFile/")); //清除一个目录下面的所有文件跟目录。 FileUtils.cleanDirectory(new File("D:/fileUtis/targetFile/")); //删除一个文件,如果是目录则递归删除forceDelete(File file),跟deleteDirectory基本一样 FileUtils.forceDelete(new File("D:/fileUtis/targetFile/")); }

五、FileUtils创建APIJava代码 public static void main(String[] args) throws Exception { //创建一个目录,可以递归创建,只要不为null FileUtils.forceMkdir(new File("D:/fileUtis/targetFile/aa")); //创建一个空文件,若文件应经存在则只更改文件的最近修改时间 FileUtils.touch(new File("D:/fileUtis/targetFile/Liftoff.java")); }

六.FileUtils复制,移动(剪切)APIJava代码 public static void main(String[] args) throws Exception { //复制目录 File dataFile=new File("D:/fileUtis/dataFile"); File targetFile = new File("D:/fileUtis/targetFile"); if(targetFile.isDirectory()){//判断是否是一个目录 FileUtils.copyDirectory(dataFile,targetFile); } //复制文件 dataFile=new File("D:/fileUtis/dataFile/joiner.java"); targetFile = new File("D:/fileUtis/targetFile/aa.txt"); FileUtils.copyFile(dataFile,targetFile); //复制文件到一个目录 dataFile=new File("D:/fileUtis/dataFile/joiner.java"); targetFile = new File("D:/fileUtis/"); FileUtils.copyFileToDirectory(dataFile, targetFile); //移动目录到新的目录并且删除老的目录,新的目录不存在会创建,如果存在会报错 dataFile=new File("D:/fileUtis/dataFile"); targetFile = new File("D:/fileUtis/aa"); FileUtils.moveDirectory(dataFile, targetFile); dataFile=new File("D:/fileUtis/dataFile"); targetFile = new File("D:/fileUtis/aa"); //把目录移动到一个新的文件下面,是新文件下面,ture,当目标文件不存在是否创建 FileUtils.moveDirectoryToDirectory(dataFile, targetFile, true); //复制文件 FileUtils.moveFile(srcFile, destFile) }

七.FileUtils的其他方法Java代码 #获取一个目录的大小 FileUtils.sizeOfDirectory(file); #获取文件或者目录的大小 FileUtils.sizeOf(file); #得到系统临时目录的路径,例如C:\Users\ADMINI~1\AppData\Local\Temp\ FileUtils.getTempDirectoryPath() #比较两个文件内容是否相等,左右两边有空格返回false FileUtils.contentEquals(file1, file2); #获取用户的主目录路径,返回的是字符串 FileUtils.getUserDirectoryPath(); #获取代表用户主目录的文件,返回的是file FileUtils.getUserDirectory(); #根据指定的文件获取一个新的文件输出流 FileUtils.openOutputStream(file); #字节转换成直观带单位的值(包括单位GB,MB,KB或字节),如下返回95 M FileUtils.byteCountToDisplaySize(100000000);

八、对文件的过滤处理Java代码 public class FileUtilsTest { /** * 通配符过滤目录下的文件 */ static void wildcardTest(){ File dir = new File("D:/fileUtis"); FileFilter fileFilter = new WildcardFileFilter("*.java"); File[] files = dir.listFiles(fileFilter); for (int i = 0; i < files.length; i++) { System.out.println(files[i]); } } /** * 过滤文件大小,等于或大于某一尺寸 ,单位为字节 */ static void sizeFile(){ File dir = new File("D:/fileUtis"); String[] files = dir.list( new SizeFileFilter(1024*2) ); for ( int i = 0; i < files.length; i++ ) { System.out.println(files[i]); } } /** * 过滤文件后缀名 */ static void suffix(){ File dir = new File("D:/fileUtis"); String[] files = dir.list(new SuffixFileFilter(".java")); for (int i = 0; i < files.length; i++) { System.out.println(files[i]); } } /** * 使用正则表达式过滤 */ static void regex(){ File dir = new File("D:/fileUtis"); FileFilter fileFilter = new RegexFileFilter("^j.*.java"); File[] files = dir.listFiles(fileFilter); for (int i = 0; i < files.length; i++) { System.out.println(files[i]); } } /** * 文件前缀过滤 */ static void aa(){ File dir = new File("D:/fileUtis"); String[] files = dir.list( new PrefixFileFilter("aa")); for ( int i = 0; i < files.length; i++ ) { System.out.println(files[i]); } } /** * 打印这个目录下所有.java结尾的文件名,会递归去他子目录中去找 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { File dir = new File("D:/fileUtis"); Collection files = FileUtils.listFiles(dir, FileFilterUtils.suffixFileFilter(".java"), DirectoryFileFilter.DIRECTORY); for (File f : files) { System.out.println(f.getName()); } } }

相关推荐

ICT:成功数字化转型的关键
365bet网球比赛比分

ICT:成功数字化转型的关键

📅 08-21 👁️ 4412
福利活动:方舟之最强战宠,你pick哪一个?
365bet网球比赛比分

福利活动:方舟之最强战宠,你pick哪一个?

📅 08-20 👁️ 1728
六道輪迴是哪六道?從你的日常習氣,看穿前世來自天道還是地獄!
农行办K宝多少钱?别急,看完这篇再决定要不要办!
《跑跑卡丁车》车辆升级攻略
365bet网球比赛比分

《跑跑卡丁车》车辆升级攻略

📅 07-21 👁️ 568
如果越女剑韩小莹有阿青的本事,射雕的结局会有什么改写呢?
《qq飞车手游》ios退款教程 ios申请退款方法
365bet网球比赛比分

《qq飞车手游》ios退款教程 ios申请退款方法

📅 08-23 👁️ 3358
5月23日出生人的性格
365sport365

5月23日出生人的性格

📅 07-21 👁️ 2437
电感的基本特性及应用
365bet网球比赛比分

电感的基本特性及应用

📅 08-27 👁️ 3259