您的位置:首页 > Web前端

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()等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐