common-io FileUtils工具类常用方法

所需jar包:

       把commons-io-2.4.jar 这个文件导入到你的项目中

pom文件


commons-io
commons-io
2.4

写文件原始写法:

	// 通过字节流 写文件
	public static void ByteWrite() {
		File file = new File("/Users/jjs/Desktop/abcd.txt");
		try {
			OutputStream outputStream = new FileOutputStream(file);
			String textString = "commons-io工具类";
			byte[] data = textString.getBytes("UTF-8");
			outputStream.write(data);
			outputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

读文件原始写法

	public static void ByreRead() throws IOException {
		//File file = new File("/Users/jjs/Desktop/abcd.txt");
		FileReader reader = new FileReader("/Users/jjs/Desktop/abcd.txt");
		BufferedReader br = new BufferedReader(reader);
		String str = null;
		while ((str = br.readLine()) != null) {
			System.out.println(str);
		}
	}

FileUtils常用方法

1 写文件

	public static void main(String[] args) throws IOException {
		
//		FileUtils.write(new File("/Users/jjs/Desktop/abc.txt"), "commons-io工具类", "UTF-8", true);
		//以追加的方式写入
//		FileUtils.writeStringToFile(new File("/Users/jjs/Desktop/abcd.txt"), "作者:cxy", "UTF-8", true);
		//写入多行
		List lines = new ArrayList();
		lines.add("第一行");
		lines.add("第二行");
		FileUtils.writeLines(new File("/Users/jjs/Desktop/abcd.txt"), lines, true);
	}

读文件

	public static void main(String[] args) throws IOException {
		//读文件  
		System.out.println(FileUtils.readFileToString(new File("/Users/jjs/Desktop/abcd.txt"), "UTF-8"));
		System.out.println(FileUtils.readLines(new File("/Users/jjs/Desktop/abcd.txt"), "UTF-8")); //返回一个list 
	}

文件复制

	public static void main(String[] args) throws IOException {
		FileUtils.copyDirectory();
		FileUtils.copyDirectoryToDirectory();
		FileUtils.copyFileToDirectory();
		FileUtils.copyFile(new File("/Users/jjs/Desktop/abcd.txt"), new File("/Users/jjs/Desktop/abcd.txt_bak"));
		//可实现快速下载
		URL url = new URL("http://hzf-image-test.oss-cn-beijing.aliyuncs.com/hr_image/HF306268301810/1513632067664AbIB40pv_defalut.JPG?x-oss-process=image/resize,h_400");
		File file = new File("/Users/jjs/Desktop/pic.jpg");
		FileUtils.copyURLToFile(url, file);
	}

实现快速下载文件

public static void main(String[] args) throws IOException {
		//下载方式1
		URL url = new URL("http://www.baidu.com/img/baidu_logo.gif");
		File file = new File("/Users/jjs/Desktop/baidu1.gif");
		FileUtils.copyURLToFile(url, file);
		
		//下载方式2
		InputStream in = new URL("http://www.baidu.com/img/baidu_logo.gif").openStream();
		byte[] gif = IOUtils.toByteArray(in);
		FileUtils.writeByteArrayToFile(new File("/Users/jjs/Desktop/baidu2.gif"), gif);
		IOUtils.closeQuietly(in);
 
		//下载方式3
		InputStream in3 = new URL("http://www.baidu.com/img/baidu_logo.gif").openStream();
		byte[] gif3 = IOUtils.toByteArray(in3);
		IOUtils.write(gif3, new FileOutputStream(new File("/Users/jjs/Desktop/baidu3.gif")));
		IOUtils.closeQuietly(in3);
	}

实现快速复制

	public static void main(String[] args) throws IOException {
 
		//复制方式1
		FileUtils.copyFile(new File("/Users/jjs/Desktop/abc.txt"), new File("/Users/jjs/Desktop/abc_bak.txt"));
 
		//复制方式2
		Writer write = new FileWriter("/Users/jjs/Desktop/abc_bak.txt");
		InputStream ins = new FileInputStream(new File("/Users/jjs/Desktop/abc.txt"));
		IOUtils.copy(ins, write);
		write.close();
		IOUtils.closeQuietly(ins);
		
		
		//将内容同时写入两个不同的文件,就当是一种另类的复制吧
		File test1 = new File("/Users/jjs/Desktop/split1.txt");
		File test2 = new File("/Users/jjs/Desktop/split2.txt");
		OutputStream outStream = null;
		try {
			FileOutputStream fos1 = new FileOutputStream(test1);
			FileOutputStream fos2 = new FileOutputStream(test2);
			//包含不同的文本  
			outStream = new TeeOutputStream(fos1, fos2);
			outStream.write("One Two Three, Test".getBytes());
			outStream.flush();
		} catch (IOException ioe) {
			System.out.println("Error writing to split output stream");
		} finally {
			IOUtils.closeQuietly(outStream);
 
		}
	}

获取网页的内容

	public static void main(String[] args) throws IOException {
		URL webUrl = new URL("https://wenku.baidu.com/view/7999faba960590c69ec376be.html?from=search");  
//		URL webUrl = new URL("http://ent.ifeng.com/a/20180105/43019249_0.shtml?_zbs_baidu_news");
		InputStream ins = webUrl.openStream();
		String contents = IOUtils.toString(ins, "gb2312");
		System.out.println("contents: " + contents);
	}

其余的一些常用的操作

    private static File parent = new File("D://test");  
    @Test  
    public void getDirTest(){  
        //获得基本的信息  
        System.out.println(FileUtils.getTempDirectory());//获取临时目录 java.io.tmpdir,getUserDirectoryPath返回路径字符串  
        System.out.println(FileUtils.getUserDirectory());//获取用户主目录 user.home,getUserDirectoryPath返回路径字符串  
  
        //以可读的方式,返回文件的大小EB, PB, TB, GB, MB, KB or bytes  
        System.out.println(FileUtils.byteCountToDisplaySize(10000000));  
        System.out.println(FileUtils.byteCountToDisplaySize(1));  
    }  
  
    @Test  
    public void openStream() throws IOException {  
        //获取文件输入和输出的文件流  
        //文件是目录或者不存在,都会跑出异常  
        InputStream in = FileUtils.openInputStream(new File("D://test/test1"));  
        OutputStream out = FileUtils.openOutputStream(new File("D://test/test2"));  
        out = FileUtils.openOutputStream(new File("D://test/test3"),true);//是否追加的形式添加内容  
    }  
  
    @Test  
    public void FileOperation() throws IOException {  
        //创建文件,如果文件存在则更新时间;如果不存在,创建一个空文件  
        //创建空文件的方式为:  
        // final OutputStream out = openOutputStream(file);  
        // IOUtils.closeQuietly(out);  
        FileUtils.touch(new File("D://test/test4"));  
  
        //文件内容的对比  
        FileUtils.contentEquals(new File("D://test/test1"),new File("D://test/test2"));  
        FileUtils.contentEqualsIgnoreEOL(new File("D://test/test1"),new File("D://test/test2"),null);//忽略换行符,第三个参数是字符集  
  
        //根据URL获取文件  
        FileUtils.toFile(new URL("file://D://test/test1"));  
        FileUtils.toFiles(null);  
        FileUtils.toURLs(new File[]{new File("D://test/test1")});  
  
        //文件拷贝  
        FileUtils.copyFileToDirectory(new File("/test1"),new File("/dir"),true);//第三个参数是否更新时间  
        FileUtils.copyFile(new File("/source"),new File("/target"),true);//TODO 阅读doCopy源码  
  
        //目录拷贝  
        File srcDir = new File("/source");  
        File destDir = new File("/target");  
  
        FileUtils.copyDirectoryToDirectory(new File("/source"),new File("/target"));  
        FileUtils.copyDirectory(new File("/source"),new File("/target"));  
  
        FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY);//仅仅拷贝目录  
  
        IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");// 创建.txt过滤器  
        IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter);  
        // 创建包含目录或者txt文件的过滤器  
        FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles);  
        // Copy using the filter  
        FileUtils.copyDirectory(srcDir, destDir, filter);//TODO 阅读doCopyDirectory源码  
  
        //文件拷贝  
        FileUtils.copyInputStreamToFile(new FileInputStream("/test"),new File("/test"));  
        FileUtils.copyURLToFile(new URL("file:/test"),new File("/test"));  
  
        //删除文件  
        FileUtils.deleteDirectory(new File("/test"));//删除目录下所有的内容  
        FileUtils.deleteQuietly(new File("/test"));//如果是目录,会级联删除;不会抛出异常  
  
        //判断文件是否存在  
        FileUtils.directoryContains(new File("/dir"),new File("/file"));  
  
        //清除目录中的内容,不会删除该目录;  
        //先verifiedListFiles检查目录,检查目录是否为目录、是否存在,然后调用listFiles,如果返回null,则抛出异常  
        //遍历目录中的文件,如果是目录则递归删除;如果是文件则强制删除,删除失败(文件不存在或无法删除)都会抛出异常  
        FileUtils.cleanDirectory(new File("/dir"));//TODO verifiedListFiles  <------2016/11/24  
  
        //等待一个文件xx秒,知道文件创建后才返回。每max(100,remainning)循环检查一次  
        while(FileUtils.waitFor(new File("/dir"),60)){}  
  
        //读取目标文件,内部调用IOUtils.toString(inputstream,"utf-8")  
        String str = FileUtils.readFileToString(new File("/dir"),"utf-8");  
  
        //内部调用IOUtils.toByteArray(in)  
        byte[] bytes = FileUtils.readFileToByteArray(new File("/dir"));  
  
        //内部调用IOUtils.readLines(in, Charsets.toCharset(encoding));  
        List strs = FileUtils.readLines(new File("/dir"),"utf-8");  
  
        //内部调用IOUtils.lineIterator(in, encoding)  
        FileUtils.lineIterator(new File("/dir"),"utf-8");  
  
        //四个参数分别为:目标文件,写入的字符串,字符集,是否追加  
        FileUtils.writeStringToFile(new File("/target"),"string","utf-8",true);  
  
        //write可以接受charsequence类型的数据,string,stringbuilder和stringbuffer都是实现了charsequence接口  
        FileUtils.write(new File("/target"),"target char sequence","utf-8",true);  
  
        FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes());//(file,字符数组)  
        FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),true);//(file,字符数组,是否追加)  
        FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),0,10);//(file,字符数组,起始位置,结束位置)  
        FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),0,10,true);//(file,字符数组,起始位置,结束位置,是否追加)  
  
        //writeLines多了一个lineEnding参数  
        FileUtils.writeLines(new File("/target"),"utf-8", FileUtils.readLines(new File("/target"),"utf-8"));  
  
        //强制删除  
        FileUtils.forceDelete(new File("/target"));  
  
        //在JVM  
        FileUtils.forceDeleteOnExit(new File("/target"));  
  
        //强制创建文件目录,如果文件存在,会抛出异常  
        FileUtils.forceMkdir(new File("/target"));  
  
        //强制创建父级目录  
        FileUtils.forceMkdirParent(new File("/xxxx/target"));  
  
        //如果是文件,直接读取文件大小;如果是目录,级联计算文件下的所有文件大小  
        FileUtils.sizeOf(new File("/target"));//返回Long  
        FileUtils.sizeOfAsBigInteger(new File("/target"));//返回BigInteger  
        FileUtils.sizeOfDirectory(new File("/target"));  
        FileUtils.sizeOfDirectoryAsBigInteger(new File("/target"));  
  
        //对比文件新旧  
        FileUtils.isFileNewer(new File("/target"),new File("/file"));  
  
        FileUtils.isFileOlder(new File("/target"), new Date());  
  
        FileUtils.checksum(new File("/target"),new CRC32());  
        FileUtils.checksumCRC32(new File("/target"));  
  
        FileUtils.moveDirectory(new File("/target"),new File("/file"));  
        FileUtils.moveDirectoryToDirectory(new File("/target"),new File("/file"),true);  
        FileUtils.moveFile(new File("/target"),new File("/file"));  
        FileUtils.moveFileToDirectory(new File("/target"),new File("/dir"),true);  
        FileUtils.moveToDirectory(new File("/target"),new File("/dir"),true);  
  
        FileUtils.isSymlink(new File("/target"));  
    }  
  
  
    @Test  
    public void findFiles(){  
        //返回文件的列表  
        List files = (List) FileUtils.listFiles(parent,new String[]{"test1","test2"},true);//TODO 重点看一下源码  
  
        //返回文件迭代器  
        Iterator files_iter =  FileUtils.iterateFiles(parent,new String[]{"test1","test3"},true);  
  
        //把collection转换成File[]  
        FileUtils.convertFileCollectionToFileArray(files);  
    }  

 

你可能感兴趣的:(java----tools,fileutils,apache-commons)