用途:IO工具类(从流中读取内容)
使用场景
IO工具类只是辅助流的读写,并不负责关闭流。原因是流可能被多次读写,读写关闭后容易造成问题。
(从流中读取内容)
(从流中读取内容)
(从流中读取内容)
项目引用
此博文的依据:hutool-5.6.5版本源码
方法明细
方法名称:cn.hutool.core.io.IoUtil.readBytes(java.io.InputStream)
方法描述
从流中读取bytes,读取完毕后关闭流
支持版本及以上
参数描述:
//这个文件3KB File src = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/copyTest1.txt") ; InputStream input = null; try { //创建流 input = new FileInputStream(src); //读取指定长度的byte数组,不关闭流 boolean toLowerCase = false; String readHex = IoUtil.readHex(input,1000,toLowerCase); System.out.println(readHex); System.out.println("--------------------"); System.out.println(HexUtil.decodeHexStr(readHex)); } catch (IOException e) { //抛出一个运行时异常(直接停止掉程序) throw new RuntimeException("运行时异常",e); } finally { try { //如果是空的 说明流创建失败 失败了不需要关闭 if (input != null) { input.close(); } } catch (Exception e) { //关闭资源失败 停止程序 throw new RuntimeException("关闭资源失败"); } }
方法明细
方法名称:cn.hutool.core.io.IoUtil.readObj(cn.hutool.core.io.ValidateObjectInputStream, java.lang.Class)
方法描述
从流中读取对象,即对象的反序列化,读取后不关闭流
此方法使用了{@link ValidateObjectInputStream}中的黑白名单方式过滤类,用于避免反序列化漏洞\
参数描述:
方法明细
方法名称:cn.hutool.core.io.IoUtil.readUtf8Lines(java.io.InputStream, T)
方法描述
从流中读取内容,使用UTF-8编码
支持版本及以上
参数描述:
public class IoUtilLineHandler implements LineHandler { @Override public void handle(String line) { System.out.println("handle:"+line); } } //-------------- @Test public void readLinesTest3(){ File src = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/copyTest1.txt") ; InputStream input = null; try { //创建流 input = new FileInputStream(src); //从流中读取内容,使用UTF-8编码 IoUtil.readLines(input, CharsetUtil.CHARSET_UTF_8, new IoUtilLineHandler()); } catch (IOException e) { //抛出一个运行时异常(直接停止掉程序) throw new RuntimeException("运行时异常",e); } finally { try { //如果是空的 说明流创建失败 失败了不需要关闭 if (input != null) { input.close(); } } catch (Exception e) { //关闭资源失败 停止程序 throw new RuntimeException("关闭资源失败"); } } }