Java 9新增的有趣方法InputStream.transferTo()
2018-02-01 22:01
316 查看
Java 9新增的有趣方法InputStream.transferTo()
2018.2.1版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。
JDK 9新增了一个有趣的方法,InputStream.transferTo(OutputStream)方法,此方法允许从对象调用方法表示的输入流中轻松传输(复制)字节到提供给该方法的输出流。正如方法的Javadoc注释所述,从该输入流中读取所有字节,并按照读取的顺序将字节写入给定的输出流。此方法可以使Java的有些例行任务变得更容易。
在使用此方法时要注意:
此方法不关闭任何流
强烈建议,如果发生I/O错误,那么输入输出两个流都应该立即关闭。
通常是在try-with-resources语句中实例化源InputStream和目标OutputStream对象。如下面的代码所示:
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class StreamsTransfer { public static void main(String[] args) { if(args.length < 1) { System.out.println("USAGE StreamsTransfer <fileName>"); System.exit(-1); } final String fileName = args[0]; try(final InputStream is = new FileInputStream(fileName); final OutputStream os = new FileOutputStream(fileName + ".copy")) { is.transferTo(os); } catch(IOException e) { System.out.println("Exception encountered: " + e); } } }
通过try-with-resources语句可以确保两个资源的正确回收。上面的代码很简单,实际的应用场景就非常多了,比如可以把InputStream替换成URL.openStream()等等。
相关文章推荐
- JAVA_HOME does not point to the JDK 解决方法
- Unable to find a javac compiler;Perhaps JAVA_HOME does not point to the JDK异常产生原因和解决方法
- 执行EXE程序出现unable to locate suitable Java runtime Environment on this machine java解决方法
- Perhaps JAVA_HOME does not point to the JDK的解决方法
- How to read file in Java – BufferedInputStream Example
- toCharArray()方法 和 Java中比较两个字符串是否相等equals方法
- Unable to find a javac compiler;Perhaps JAVA_HOME does not point to the JDK异常产生原因和解决方法。
- flash绘图API :flash player11新增的绘图API方法--cubicCurveTo
- Java:对集合中的对象进行排序需要实现Interface Comparable接口并实现int compareTo(T o)方法
- 【转】Java编码与乱码---String的toCharArray()方法
- 分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)
- 【转载】java输入流转为文件 InputStreamToFile 以及 byte[]和InputStream的相互转换
- Java toLowerCase()/toUpperCase()方法的使用注意
- 出现java.lang.IllegalArgumentException: id to load is required for loading的解决方法
- Perhaps JAVA_HOME does not point to the JDK的解决方法
- java.lang.System 的in是final的,为什么要有public static void setIn(InputStream in)方法?
- Java网络编程中inputStream.available()的使用方法
- flash绘图API :flash player11新增的绘图API方法--cubicCurveTo
- 如何获得刚才新增的Id---hibernate--java--j2ee--[完美方法]
- Java 输出流转输入流的方法(OutputStream转InputStream,Writer转Reader)