字节流:
字节输出流:OutputStream
OutputStream有很多子类,其中子类FileOutputStream可用来写入数据到文件。
FileOutputStream类,即文件输出流,是用于将数据写入 File的输出流。
FileOutputStream(String name):创建一个具有指定名称的文件中写入数据的输出文件流
字节输入流:InputStream
int read():读取一个字节并返回,没有字节返回-1.
int read(byte[]): 读取一定量的字节数,并存储到字节数组中,返回读取到的字节数。
InputStream有很多子类,其中子类FileInputStream可用来读取文件内容。
FileInputStream 从文件系统中的某个文件中获得输入字节。
下面是一个字节流复制视频的小案例:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
public class Work01 {
public static void main(String[] args) throws IOException {
//一个数组一个数组复制
Date date=new Date();
System.out.println("开始时间:"+date.getTime());
//明确数据源
FileInputStream fis=new FileInputStream("D:\\io1227\\video\\AMG_GT_ALL_4_original.mp4");
//明确目的地
FileOutputStream fos=new FileOutputStream("D:\\io1227\\mp4.mp4");
//开始复制
byte[] bytes=new byte[1024];
int len=0;
while((len=fis.read(bytes))!=-1){
fos.write(bytes);
}
fis.close();
fos.close();
Date date2=new Date();
System.out.println("数组复制结束时间:"+date2.getTime());
//一个字节一个字节复制
FileInputStream fis2=new FileInputStream("D:\\io1227\\video\\AMG_GT_ALL_4_original.mp4");
FileOutputStream fos2=new FileOutputStream("D:\\io1227\\mp5.mp4");
int len2=0;
while((len2=fis2.read())!=-1){
fos2.write(len2);
}
fis2.close();
fos2.close();
Date date3=new Date();
System.out.println("字节复制结束时间:"+date3.getTime());
System.out.println("数组复制用时:"+(date2.getTime()-date.getTime())+"毫秒");
System.out.println("字节复制用时:"+(date3.getTime()-date2.getTime())+"毫秒");
}
}
这是复制了一个大小为2330KB的小视频,非常明显数组比字节的效率要高很多
,