1. 程式人生 > >學習Apache common-io工具類

學習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