Apache Commons IO之IOUtils优雅操作流

2020-02-02 15:40:36

在开发过程中,你肯定遇到过从流中解析数据,或者把数据写入流中,或者输入流转换为输出流,而且最后还要进行流的关闭,原始jdk自带的方法写起来太复杂,还要注意各种异常,如果你为此感到烦恼,那IOUtils可以让我们优雅的操作流。

1.从流中读取数据

FileInputStream fileInputStream = new FileInputStream(new File("d://demo.txt"));List<String> list = IOUtils.readLines(fileInputStream, "UTF-8");//只要是InputStream流都可以,比如http响应的流//直接把流读取为StringString content = IOUtils.toString(inputStream,"UTF-8");//把流转换为byte数组byte[] bytes = IOUtils.toByteArray(inputStream);
2.把数据写入流

//把数据写入输出流IOUtils.write("abc", outputStream);//把字符串转换流InputStream inputStream = IOUtils.toInputStream("aaaaaaaaa", "UTF-8");
2.流的相互复制

IOUtils.copy(inputstream,outputstream);IOUtils.copy(inputstream,writer);IOUtils.copy(inputstream,writer,encoding);IOUtils.copy(reader,outputstream);IOUtils.copy(reader,writer);IOUtils.copy(reader,writer,encoding);
2.流的关闭

try {
     return IOUtils.copy(inputStream, outputStream);
 } finally {
     //优雅的关闭流
     IOUtils.closeQuietly(inputStream);
     IOUtils.closeQuietly(outputStream);
 }

  • 2020-12-01 16:21:47

    Meteor与express结合开发

    Meteor本质上是一个已经公开了连接 http服务器的节点应用程序,这意味着您可以像下面这样定义服务器路由:,如果您坚持使用Express,则可以将Express路由注册为Connect中间件,如下所示:

  • 2020-12-01 16:25:32

    nuxtjs引入jquery

    nuxt引入jQuery库 nuxtjs如何添加 Webpack 插件?

  • 2020-12-01 16:43:37

    fieldset标签做输入框

    比如 vuetify中的 input组件,就用到了fieldset做边框, 这个时候我们想改边框,却找不到border,因为fieldset是靠color来修改边框颜色的。

  • 2020-12-01 17:25:39

    axios并发操作

    很多时候,我们需要同时向后端进行多个请求,当所有请求都返回数据后,再进行一些操作。

  • 2020-12-02 14:45:35

    Remote-SSH使用教程 VSCode

    微软开发了一个VSCode的插件Remote-SSH,可以说是目前比较完美的解决了在windows下开发linux程序的问题。