19 IO流(十六)——Commons工具包,FileUtils(一)

摘要:
commons包的API:自己检查一下,不用费心将commons包导入方法转移到云commons包commons是一个java IO开源工具。导入方法:从apache下载commons包。org,解压缩并复制commons-io-2.6-sources。jar和commons-io-2.6.jar。在eclipse项目中创建一个文件夹lib,粘贴jar包,右键单击jar包,然后构建commons包的核心方法s1-?它是FileUtils类下的一个方法。请用FileUtis调用它。方法名称。

Commons包的API:自己查吧懒得传云

Commons包的导入方法

Commons是一个java的IO开源工具,导入方法:

  1. 从apache.org下载commons包
  2. 解压
  3. copy其中的commons-io-2.6-sources.jar与commons-io-2.6.jar
  4. 在eclipse的项目中新建一个文件夹lib,粘贴jar包
  5. 右键jar包,buildPath

Commons包的核心方法s

1-?为FileUtils类下的方法,请用FileUtis.方法名调用。

1.sizeOf方法

返回文件或文件夹的大小

long sizeOf(File f)

 实例:

public static void fileSize(){
		//文件大小方法
		long len = FileUtils.sizeOf(new File("src/com/xiaohei/test/Empty.java"));
		System.out.printf("文件大小:%d%n",len);
		//文件夹大小
		long len2 = FileUtils.sizeOf(new File("lib"));
		System.out.printf("文件夹大小:%d%n",len2);
	}

  

2.listFile方法

有条件的列出子孙集,返回的是一个集合

Collection<File> listFile(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter) 

 参数:

  • 第一个参数:文件夹File
  • 第二个参数:文件过滤器
    • EmptyFileFilter.EMPTY 筛选空文件(文件大小为0)入集合
    • EmptyFileFilter.NOT_EMPTY 筛选非空文件入集合
    • new SuffixFileFilter("后缀名") 筛选符合后缀条件的文件入集合
    • FileFilterUtils.or(条件1,条件2,...) 如:FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class")) 筛选后缀为java或class的文件入集合
    • FileFilterUtils.and(条件1,条件2,...) 如:FileFilterUtils.and(new SuffixFileFilter("java"),EmptyFileFilter.EMPTY) 筛选后缀为java且为空的文件入集合
  • 第三个参数:文件夹过滤器
    • null 只返回第一个参数下的一层里符合参数二条件的文件
    • DirectoryFileFilter.INSTANCE 返回第一个参数下的符合第二个参数限制的所有子孙集文件
public static void listFl(){
		// list<File> listFile(路径,文件过滤器,文件夹过滤器)
		Collection<File> files = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),EmptyFileFilter.NOT_EMPTY,DirectoryFileFilter.INSTANCE);
		System.out.println("--------EmptyFileFilter.NOT_EMPTY,DirectoryFileFilter.INSTANCE------------");
		for(File file : files){
			System.out.println(file.getAbsolutePath());
		}
		
		Collection<File> files2 = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),EmptyFileFilter.EMPTY,DirectoryFileFilter.INSTANCE);
		System.out.println("--------EmptyFileFilter.EMPTY,DirectoryFileFilter.INSTANCE------------");
		for(File file : files2){
			System.out.println(file.getAbsolutePath());
		}
		
		Collection<File> files3 = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),new SuffixFileFilter("java"),DirectoryFileFilter.INSTANCE);
		System.out.println("--------SuffixFileFilter("后缀java"),DirectoryFileFilter.INSTANCE------------");
		for(File file : files3){
			System.out.println(file.getAbsolutePath());
		}
		
		Collection<File> files4 = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),
				FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class")),
					DirectoryFileFilter.INSTANCE);
		System.out.println("--------FileFilterUtils.or(后缀java,后缀class,...),DirectoryFileFilter.INSTANCE------------");
		for(File file : files4){
			System.out.println(file.getAbsolutePath());
		}
		
		Collection<File> files5 = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),
				FileFilterUtils.and(new SuffixFileFilter("java"),EmptyFileFilter.EMPTY),
				DirectoryFileFilter.INSTANCE);
		System.out.println("--------FileFilterUtils.and(后缀java,文件为空,...),DirectoryFileFilter.INSTANCE------------");
		for(File file : files5){
			System.out.println(file.getAbsolutePath());
		}
	}

  

 3.读取文件的相关方法

  1. readFileToString方法
  2. readFileToByteArray方法
  3. readLines方法:逐行读取
  4. lineIterator方法:迭代器逐行读取
public static void readFile() throws IOException{
		System.out.println("--------readFileToString方法------");
		String str = FileUtils.readFileToString(new File("readFile.txt"),"gbk");
		System.out.println(str);
		
		System.out.println("--------readFileToByteArray方法------");
		byte[] content = FileUtils.readFileToByteArray(new File("readFile.txt"));
		System.out.println("输出数组的长度:"+content.length);
		
		System.out.println("--------readLines方法:逐行读取------");
		List<String> msgs = FileUtils.readLines(new File("readFile.txt"));
		for(String m : msgs){
			System.out.println(m);
		}
		
		System.out.println("--------lineIterator方法:迭代器逐行读取------");
		LineIterator it = FileUtils.lineIterator(new File("readFile.txt"));
		while(it.hasNext()){
			System.out.println(it.nextLine());
		}
	}

  

4.写入文件的相关方法

  1. write方法
  2. writeByteArrayToFile方法
  3. writeLine方法
public static void writeFile() throws IOException{
		//写入文件
		System.out.println("----------write方法---------------");
		FileUtils.write(new File("writeFile.txt"),"这里是写入的内容","UTF-8",true);//有关文件的操作都要习惯的写上字符集
		System.out.println("------------writeByteArrayToFile方法--------------");
		FileUtils.writeByteArrayToFile(new File("writeFile1.txt"),"这里是写入的内容".getBytes("UTF-8"),true);//有关文件的操作都要习惯的写上字符集
		System.out.println("------------writeLine方法--------------");
		List<String> datas = new ArrayList<String>();
		datas.add("周杰伦");
		datas.add("周星驰");
		datas.add("周润发");
		FileUtils.writeLines(new File("fileLine.txt"), datas,"--连接符---",true);
	}

  

完整代码

package com.xiaohei.test;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.EmptyFileFilter;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.SuffixFileFilter;

public class COMTest {
	public static void main(String[] args) throws IOException{
		//sizeOf方法:返回文件或文件夹大小
		System.out.println("--------1.sizeOf方法--------------");
		fileSize();
		//listFile方法:返回子孙文件集
		System.out.println("--------2.listFiles方法--------------");
		listFl();
		//读取文件内容方法
		System.out.println("--------3.读取的相关方法--------------");
		readFile();
		//写出文件的相关方法
		System.out.println("--------4.写出文件的相关方法--------------");
		writeFile();
	}
	public static void fileSize(){
		//文件大小方法
		long len = FileUtils.sizeOf(new File("src/com/xiaohei/test/Empty.java"));
		System.out.printf("文件大小:%d%n",len);
		//文件夹大小
		long len2 = FileUtils.sizeOf(new File("lib"));
		System.out.printf("文件夹大小:%d%n",len2);
	}
	
	public static void listFl(){
		// list<> listFile(路径,文件过滤器,文件夹过滤器)
		Collection<File> files = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),EmptyFileFilter.NOT_EMPTY,DirectoryFileFilter.INSTANCE);
		System.out.println("--------EmptyFileFilter.NOT_EMPTY,DirectoryFileFilter.INSTANCE------------");
		for(File file : files){
			System.out.println(file.getAbsolutePath());
		}
		
		Collection<File> files2 = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),EmptyFileFilter.EMPTY,DirectoryFileFilter.INSTANCE);
		System.out.println("--------EmptyFileFilter.EMPTY,DirectoryFileFilter.INSTANCE------------");
		for(File file : files2){
			System.out.println(file.getAbsolutePath());
		}
		
		Collection<File> files3 = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),new SuffixFileFilter("java"),DirectoryFileFilter.INSTANCE);
		System.out.println("--------SuffixFileFilter("后缀java"),DirectoryFileFilter.INSTANCE------------");
		for(File file : files3){
			System.out.println(file.getAbsolutePath());
		}
		
		Collection<File> files4 = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),
				FileFilterUtils.or(new SuffixFileFilter("java"),new SuffixFileFilter("class")),
					DirectoryFileFilter.INSTANCE);
		System.out.println("--------FileFilterUtils.or(后缀java,后缀class,...),DirectoryFileFilter.INSTANCE------------");
		for(File file : files4){
			System.out.println(file.getAbsolutePath());
		}
		
		Collection<File> files5 = FileUtils.listFiles(new File("C:/Users/live/workspace/Connect"),
				FileFilterUtils.and(new SuffixFileFilter("java"),EmptyFileFilter.EMPTY),
				DirectoryFileFilter.INSTANCE);
		System.out.println("--------FileFilterUtils.and(后缀java,文件为空,...),DirectoryFileFilter.INSTANCE------------");
		for(File file : files5){
			System.out.println(file.getAbsolutePath());
		}
	}
	
	/**
	 * 读取文件的方法
	 * @throws IOException 
	 * */
	public static void readFile() throws IOException{
		System.out.println("--------readFileToString方法------");
		String str = FileUtils.readFileToString(new File("readFile.txt"),"gbk");
		System.out.println(str);
		
		System.out.println("--------readFileToByteArray方法------");
		byte[] content = FileUtils.readFileToByteArray(new File("readFile.txt"));
		System.out.println("输出数组的长度:"+content.length);
		
		System.out.println("--------readLines方法:逐行读取------");
		List<String> msgs = FileUtils.readLines(new File("readFile.txt"));
		for(String m : msgs){
			System.out.println(m);
		}
		
		System.out.println("--------lineIterator方法:迭代器逐行读取------");
		LineIterator it = FileUtils.lineIterator(new File("readFile.txt"));
		while(it.hasNext()){
			System.out.println(it.nextLine());
		}
	}
	/**
	 * 写出文件的相关方法
	 * @throws IOException 
	 * */
	public static void writeFile() throws IOException{
		//写入文件
		System.out.println("----------write方法---------------");
		FileUtils.write(new File("writeFile.txt"),"这里是写入的内容","UTF-8",true);//有关文件的操作都要习惯的写上字符集
		System.out.println("------------writeByteArrayToFile方法--------------");
		FileUtils.writeByteArrayToFile(new File("writeFile1.txt"),"这里是写入的内容".getBytes("UTF-8"),true);//有关文件的操作都要习惯的写上字符集
		System.out.println("------------writeLine方法--------------");
		List<String> datas = new ArrayList<String>();
		datas.add("周杰伦");
		datas.add("周星驰");
		datas.add("周润发");
		FileUtils.writeLines(new File("fileLine.txt"), datas,"--连接符---",true);
	}
}

  

免责声明:文章转载自《19 IO流(十六)——Commons工具包,FileUtils(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA Swing开发单机版项目.Net Core 商城微服务项目系列(十五): 构建定时任务调度和消息队列管理系统下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java 后台通过IO流把文件传到前端并下载

我的业务需求是两个不同的web程序放在不同的服务器上,web程序A要访问到web程序B上传上来的文件,所以用到了这一个IO读取文件的接口      JAVA代码(排版有点问题  已经尽力补救了(:3_ヽ)_) import java.io.BufferedInputStream; import java.io.BufferedOutputStream;...

通过response向服务器用Io流写入图片

   1.响应头设置字节。     使用response获得字节输出流       ServletOutputStream out = response.getOutputStream();     获取文件的绝对路径        String realPath = this.getServletContext().getRealPath("a.jpg...

Java IO流 DataOutputStream、DataInputStream的基本使用

            DataOutputStream、DataInputStream的基本使用   DataInputStream数据输入流允许应用程序以独立于机器的方式从底层输入流读取原始Java数据类型。应用程序使用数据输出流来写入稍后可以被数据输入流读取的数据。DataInputStream对于多线程访问来说不一定是安全的。 线程安全是可选的,由...

Java IO 关闭流的方式

Java IO 关闭流的方式 分类 练习:将分割文件中的流关闭方式改为finally形式 练习:文件合并中的流关闭方式改为try()形式 传送门:这里更详细 分类 在try中关闭 弊端是如果文件不存在或者读取的时候有问题而抛出异常,那么就不会执行流的关闭语句,存在资源占用隐患 在finally中关闭 这是标准的关闭流的方式 1、首先把引用声...

JAVA IO流常见问题

1、字节流和字符流的区别? (1)读写单位不同:字节流以字节(8 bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 (2)处理对象不同:字节流能处理所有类型的数据(如图片、avi 等),而字符流只能处理字符类型的数据。 (3)字节流没有缓冲区,是直接输出的,而字符流是输出到缓冲区的。因此在输出时,字节流不调用 colse() 方法...

Java的IO流以及输入流与输出流的异同

一:流的基本概念:           Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。    数据流是 Java 进行 I/O 操...