package com.example.demo.study;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class IoStudy {
public static void main(String[] args) {
FileInputStream input = null;
FileOutputStream output = null;
try {
input = new FileInputStream(new File("D:/guns/13.全局异常拦截/13.全局异常拦截.mp4"));
output = new FileOutputStream("D:/guns/13.全局异常拦截/13.全局异常拦截copy.mp4");
int len = -1;
//创建一个长度为1024的字节数组,每次都读取1kb,目的是缓存,如果不用缓冲区,用input.read(),就会效率低,一个一个读字节,缓冲区是一次读1000个
byte[] bytes = new byte[1024];
//每次都是从读取流中读取(1k)长度的数据,然后再写到文件去(1k的)数据,注意,每次读取read都会不同,是获取到下一个,直到后面最后一个.
while ((len = input.read(bytes)) != -1) {
//因为每次得到的是新的数组,所以每次写都是新数组的"0-len"
//如果write(byetes)是追加到文件后面,所以直接每次添1K.假如最后一次只剩下小于1024 也会写入1024 其中不够的用空格代替,但是output.write(bytes, 0, len)不会
output.write(bytes, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != input) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != output) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}