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