学习Apache common-io工具类

1、前言

工具类总是可以提高开发者的效率,今天学习一下Apache关于IO的工具类,所谓Apache出品必是精品,那可得好好学习学习。偷笑

2、maven依赖

<dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
</dependency>

3、FileUtils学习               

       /**
	 * FileUtils 测试
	 * */
	@Test
	public void fileTest01() throws IOException{
		/*
		 * 通过绝对路径获取file对象(原来是通过new File实现的)
		 * File file = FileUtils.getFile(SRC_FILE_URL);
		 * */
		
		//实现文件复制
		FileUtils.copyFile(FileUtils.getFile(SRC_FILE_URL), FileUtils.getFile(DEST_FILE_URL));
		System.out.println("copy OK");
	}
	
	/**
	 * fileTest02  通过File文件读取文件内容
	 * 
	 * Charset.defaultCharset(): 先按照JVM虚拟机的配置编码解码,如果不支持,则使用UTF-8编码
	 */
	@Test
	public void fileTest02() throws IOException{
		String content = FileUtils.readFileToString(FileUtils.getFile(SRC_FILE_URL), Charset.defaultCharset());
		System.out.println(content);
	}
	
	/**
	 * 直接指定编码格式
	 */
	@Test
	public void fileTest03() throws IOException{
		String content = FileUtils.readFileToString(FileUtils.getFile(SRC_FILE_URL), "UTF-8");
		System.out.println(content);
	}
	
	/**
	 * 复制图片
	 */
	@Test
	public void fileTest04() throws IOException{
		FileUtils.copyFile(FileUtils.getFile(SRC_IMG_URL), FileUtils.getFile(DEST_IMG_URL));
		System.out.println("copy OK");
	}

4、IOUtils学习

       /**
	 * IOUtils 测试
	 * */
	@Test
	public void IOTest01() throws IOException{
		//通过IO流读取文件内容
		FileInputStream input = new FileInputStream(SRC_FILE_URL);
		//按行读取
		List<String> readLines = IOUtils.readLines(input, "UTF-8");
		for (String content : readLines) {
			System.out.println(content);
			System.out.println("-------------------");
		}
		//创建的流必须关闭
		IOUtils.closeQuietly(input);
	}
	
	/**
	 * 通过流获取文件,直接获取文件内容,返回值类型String
	 */
	@Test
	public void IOTest02() throws IOException{
		FileInputStream input = new FileInputStream(SRC_FILE_URL);
		String content = IOUtils.toString(input, "UTF-8");
		System.out.println(content);
		IOUtils.closeQuietly(input);
	}
	
	/**
	 * 获取流文件指定的字节数据,注意:不会获取所有的字节数
	 */
	@Test
	public void IOTest03() throws IOException{
		FileInputStream input = new FileInputStream(SRC_FILE_URL);
		byte[] byteArray = IOUtils.toByteArray(input, 50);
		System.out.println(new String(byteArray));
		IOUtils.closeQuietly(input);
	}
	
	/**
	 * 获取流文件的字节数据
	 */
	@Test
	public void IOTest04() throws IOException{
		FileInputStream input = new FileInputStream(SRC_FILE_URL);
		byte[] byteArray = IOUtils.toByteArray(input);
		System.out.println(new String(byteArray));
		IOUtils.closeQuietly(input);
	}
	
	/**
	 * 获取流文件内容,将文件内容通过流转化成字节数据
	 */
	@Test
	public void IOTest05() throws IOException{
		String content = FileUtils.readFileToString(FileUtils.getFile(SRC_FILE_URL), Charset.defaultCharset());
		InputStream inputStream = IOUtils.toInputStream(content, "UTF-8");
		byte[] byteArray = IOUtils.toByteArray(inputStream);
		System.out.println(new String(byteArray));
		IOUtils.closeQuietly(inputStream);
	}
	
	/**
	 * 通过URL和IO将网络图片转化成base64编码字符串
	 */
	@Test
	public void IOTest06() throws IOException{
		URL imgUrL = new URL("https://gss0.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D800%2C450/sign=558b005097504fc2a20ab80dd5edcb25/08f790529822720e76566ea277cb0a46f31fabca.jpg");
		byte[] byteArray = IOUtils.toByteArray(imgUrL);
		Encoder encoder = Base64.getEncoder();
		String encodeToString = encoder.encodeToString(byteArray);
		System.out.println("data:image/jpeg;base64,"+ encodeToString);
	}
	
	/**
	 * 将流转化成Base64编码字符串
	 */
	@Test
	public void IOTest07() throws IOException{
		FileInputStream input = new FileInputStream(FileUtils.getFile(SRC_IMG_URL));
		byte[] byteArray = IOUtils.toByteArray(input);
		Encoder encoder = Base64.getEncoder();
		String encodeToString = encoder.encodeToString(byteArray);
		System.out.println("data:image/jpeg;base64,"+ encodeToString);
	}

5、后记

Apache common-io工具类还有很多方法,这里值展示了部分常用的工具类。其他的工具类可参照官网后者其他技术博客

6、参考文献

官网:

http://commons.apache.org/proper/commons-io/download_io.cgi

http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值