直接上代码!
public void test() {
// 创建一个有内容的文本文件用于测试
String path = "C:\\Users\\面试\\Desktop\\source.txt";
// copy后生成的文件
String path2 = "C:\\Users\\面试\\Desktop\\target.txt";
// 也可以输出到控制台 BufferedOutputStream构造函数的参数为 os
OutputStream os = System.out;
try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));
BufferedOutputStream bos = new BufferedOutputStream((new FileOutputStream(new File(path2))))) {
byte[] buff = new byte[1024];
int len;
while ((len = bis.read(buff)) != -1) {
bos.write(buff, 0 ,len);
}
} catch (IOException e) {
e.printStackTrace();
}
}
这样及提高编写效率又提高了运行效率,这种写法适合简单的一些流事件,如果涉及一些高深的流事件(如:使用GZIPOutputStream等),需要了解资源的close
方法内部的实现逻辑,否则还是可能会导致资源。
参考:优快云的某位大佬