IO流:字节流复制视频

Posted nbkls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流:字节流复制视频相关的知识,希望对你有一定的参考价值。

字节流:

字节输出流: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:io1227videoAMG_GT_ALL_4_original.mp4");
  //明确目的地
  FileOutputStream fos=new FileOutputStream("D:io1227mp4.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:io1227videoAMG_GT_ALL_4_original.mp4");
  FileOutputStream fos2=new FileOutputStream("D:io1227mp5.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的小视频,非常明显数组比字节的效率要高很多

技术图片

以上是关于IO流:字节流复制视频的主要内容,如果未能解决你的问题,请参考以下文章

java io流(字节流)复制文件

IO流24 - 字节流 - 字节流的四种复制文件方式对比

IO流,字节流复制文件,字符流+缓冲复制文件

IO流 - 复制文件(字节缓冲流+字节流)

字节流与字符流的简单应用

使用IO流复制文件