zoukankan      html  css  js  c++  java
  • 19 IO流(十六)——Commons工具包,FileUtils(一)

    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);
    	}
    }
    

      

  • 相关阅读:
    步骤条 CSS样式
    CSS 常用样式集合(更新中。。。)
    jQuery对checkbox的各种操作
    bootstrap 模态框的动态复用
    js 跳转链接的几种方式
    TP5.0 关于validate验证器add和edit验证规则不统一的复杂情形
    Navicat Premium (Windows) 15破解版 安装步骤
    利用jquery和ajax实现省市区的三级联动
    常用的SAP标准函数
    SAP 录屏BDC使用—实例
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/11947365.html
Copyright © 2011-2022 走看看