学习Apache common-io工具类

167 阅读2分钟

学习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、参考文献

官网:

commons.apache.org/proper/comm…

commons.apache.org/proper/comm…