首先,我们要下载FileUtils相关的Apache-commons-io jar包以及api文档。FileUtils类库的下载页面在:
http://commons.apache.org/proper/commons-io/download_io.cgi
image.png
FieUtils类中常用方法的介绍
打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:
cleanDirectory:清空目录,但不删除目录。
contentEquals:比较两个文件的内容是否相同。
copyDirectory:将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的 文件。
copyFile:将一个文件拷贝到一个新的地址。
copyFileToDirectory:将一个文件拷贝到某个目录下。
copyInputStreamToFile:将一个输入流中的内容拷贝到某个文件。
deleteDirectory:删除目录。
deleteQuietly:删除文件。
listFiles:列出指定目录下的所有文件。
openInputSteam:打开指定文件的输入流。
readFileToString:将文件内容作为字符串返回。
readLines:将文件内容按行返回到一个字符串数组中。
size:返回文件或目录的大小。
write:将字符串内容直接写到文件中。
writeByteArrayToFile:将字节数组内容写到文件中。
writeLines:将容器中的元素的toString方法返回的内容依次写入文件中。
writeStringToFile:将字符串内容写到文件中。
示例:
1、统计文件或者目录大小
public static void main(String[] args) {
//文件大小
long len =FileUtils.sizeOf(new File(".../../../XX.java"));
System.out.println(len);
//目录大小
len = FileUtils.sizeOf(new File("D:/../../../study04"));
System.out.println(len);
}
2、列出子孙级目录或文件,带有过滤功能
public static void main(String[] args) {
Collection<File> files =FileUtils.listFiles(new File("D:\\java300\\IO_study04"),
EmptyFileFilter.NOT_EMPTY, null);
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
System.out.println("---------------------");
files =FileUtils.listFiles(new File("D:\\..\\IO_study04"),
EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE);
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
System.out.println("---------------------");
files =FileUtils.listFiles(new File("D:\\..\\IO_study04"),
new SuffixFileFilter("java"), DirectoryFileFilter.INSTANCE);
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
System.out.println("---------------------");
files =FileUtils.listFiles(new File("D:\\..\\IO_study04"),
FileFilterUtils.or(new SuffixFileFilter("java"),
new SuffixFileFilter("class"),EmptyFileFilter.EMPTY), DirectoryFileFilter.INSTANCE);
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
System.out.println("---------------------");
files =FileUtils.listFiles(new File("D:\\..\\IO_study04"),
FileFilterUtils.and(new SuffixFileFilter("java"),
EmptyFileFilter.NOT_EMPTY), DirectoryFileFilter.INSTANCE);
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
}
3、读物文件
public static void main(String[] args) throws IOException {
//读取文件
String msg =FileUtils.readFileToString(new File("emp.txt"),"UTF-8");
System.out.println(msg);
byte[] datas = FileUtils.readFileToByteArray(new File("emp.txt"));
System.out.println(datas.length);
//逐行读取
List<String> msgs= FileUtils.readLines(new File("emp.txt"),"UTF-8");
for (String string : msgs) {
System.out.println(string);
}
LineIterator it =FileUtils.lineIterator(new File("emp.txt"),"UTF-8");
while(it.hasNext()) {
System.out.println(it.nextLine());
}
}
4、写出内容
public static void main(String[] args) throws IOException {
//写出文件
FileUtils.write(new File("happy.sxt"), "学习是一件伟大的事业\r\n","UTF-8");
FileUtils.writeStringToFile(new File("happy.sxt"), "学习是一件辛苦的事业\r\n","UTF-8",true);
FileUtils.writeByteArrayToFile(new File("happy.sxt"), "学习是一件幸福的事业\r\n".getBytes("UTF-8"),true);
//写出列表
List<String> datas =new ArrayList<String>();
datas.add("马云");
datas.add("马化腾");
FileUtils.writeLines(new File("happy.sxt"), datas,"--------------",true);
}
5、复制文件
public static void main(String[] args) throws IOException {
//复制文件
//FileUtils.copyFile(new File("p.png"),new File("p-copy.png"));
//复制文件到目录
//FileUtils.copyFileToDirectory(new File("p.png"),new File("lib"));
//复制目录到目录
//FileUtils.copyDirectoryToDirectory(new File("lib"),new File("lib2"));
//复制目录
//FileUtils.copyDirectory(new File("lib"),new File("lib2"));
//拷贝URL内容
//String url = "https://pic2.zhimg.com/v2-7d01cab20858648cbf62333a7988e6d0_qhd.jpg";
//FileUtils.copyURLToFile(new URL(url), new File("marvel.jpg"));
String datas =IOUtils.toString(new URL("http://www.163.com"), "gbk");
System.out.println(datas);
}
©著作权归作者所有:来自51CTO博客作者huingsn的原创作品,如需转载,请注明出处,否则将追究法律责任