InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。

OutputSteam:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。

Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。

Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。

  1. package IOStream;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.BufferedOutputStream;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileNotFoundException;
  8. import java.io.FileOutputStream;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.io.OutputStream;
  12.  
  13. public class BufferedStreamDemo {
  14. /**
  15. * 利用缓冲字节流来实现视频、音频、图片的复制粘贴
  16. */
  17. private static final String FilePath1 = "D:/图片文件包/夫人.jpg";// 要复制的文件路径
  18. private static final String FilePath2 = "E:/夫人.jpg"; // 文件目标路径
  19.  
  20. /**
  21. * 1.使用缓存流拷贝文件
  22. * 2.记录拷贝过程用时
  23. */
  24. public static long CopyFileByBufferedStream(){
  25. File file1 = new File(FilePath1); // 创建要复制的文件对象
  26. if(!file1.exists()){ // 判断文件路径是否存在
  27. System.out.println("文件不存在!");
  28. return 0;
  29. }
  30. long starTime = System.currentTimeMillis(); // 记录复制文件所需时间
  31.  
  32. InputStream inStream = null; // 创建字节输入流
  33. BufferedInputStream bInStream = null; // 创建缓冲输入字节流
  34. OutputStream outStream = null; // 创建字节输出流
  35. BufferedOutputStream bOutStream = null; // 创建缓冲字节输出流
  36.  
  37. try {
  38. inStream = new FileInputStream(FilePath1); // 创建文件输入流,指向路径可以是:FilePath1,也可以是file1
  39. bInStream = new BufferedInputStream(inStream); // 用缓冲输入流装饰文件输入流
  40. outStream = new FileOutputStream(FilePath2); // 创建文件输出流,指向目标路径
  41. bOutStream = new BufferedOutputStream(outStream); // 用缓冲输出流来包装文件输出流
  42.  
  43. int i = 0;
  44. while((i = bInStream.read()) != -1){
  45. bOutStream.write(i); // 对接流,输出文件
  46. }
  47.  
  48. System.out.println("文件拷贝完成!");
  49.  
  50. } catch (FileNotFoundException e) {
  51. e.printStackTrace();
  52. } catch (IOException e) {
  53. e.printStackTrace();
  54. } finally{
  55. try {
  56. bOutStream.close();
  57. bInStream.close();
  58.  
  59. } catch (IOException e) {
  60. e.printStackTrace();
  61. }
  62. }
  63.  
  64. long endTime = System.currentTimeMillis();
  65. return endTime - starTime;
  66. }
  67.  
  68. public static void main(String[] args) {
  69.  
  70. long time = CopyFileByBufferedStream();
  71. System.out.println("拷贝用时:" + time + "ms");
  72. }
  73. }

Java 利用缓冲字节流来实现视频、音频、图片的复制粘贴的更多相关文章

  1. 利用FFmpeg玩转Android视频录制与压缩(二)<转>

    转载出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个月,身边很多人的女 ...

  2. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  3. Java Web 中使用ffmpeg实现视频转码、视频截图

    Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html  ...

  4. H5新特性-视频,音频-Flash-canvas绘图

    json格式 json - > AJAX json:数据格式,通常是以字符串形式表示 对象 {"name":"james","age" ...

  5. Java之缓冲流(字节/字符缓冲流)

    概述 缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流: BufferedInputStream , BufferedOutputStrea ...

  6. java利用JDK调用并执行js源码

    前言: 不同开发语言之间具有通用性,更具有协作调用的可能.有时候对于一些场景会有调用js的需求,因此下面展示了一个java利用自身JDK调用js函数的demo,供感兴趣的朋友参考. js函数文件 ex ...

  7. Java利用Preferences设置个人偏好

    Java利用Preferences设置个人偏好 Preferences的中文意思即偏好或喜好的意思,也就是说同一个程序在每次运行完后,可以通过Preferences来记录用户的偏好,下次启动时,程序会 ...

  8. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  9. java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板

    java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring   本文主要介绍利用JavaMailS ...

随机推荐

  1. POJ 1625 Censored!(AC自动机->指针版+DP+大数)题解

    题目:给你n个字母,p个模式串,要你写一个长度为m的串,要求这个串不能包含模式串,问你这样的串最多能写几个 思路:dp+AC自动机应该能看出来,万万没想到这题还要加大数...orz 状态转移方程dp[ ...

  2. MyBatis获取SqlSession

    package com.ykmimi.dao; import org.apache.ibatis.session.SqlSession; import com.ykmimi.entity.Studen ...

  3. JVM知识总结-运行时区域划分

    区域简介 JVM运行时区域有些随着虚拟机进程的启动而存在,有些依赖于用户线程的启动和结束而建立和销毁,大致分为以下几类:方法区,虚拟机栈,本地方法栈,堆,程序计数器,概念图如下(源于<深入理解J ...

  4. numpy.zeros(np.zeros)使用方法--python学习笔记31

    https://blog.csdn.net/qq_26948675/article/details/54318917

  5. LINUX QQ

    查询龙井QQ http://www.longene.org/forum/viewtopic.php?f=6&t=4700

  6. JAVA实现Excel导入/导出【转】

    JAVA实现Excel导入/导出[转] POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bi ...

  7. react中map循环中key取值问题

    数组中没有唯一的key,可以定义变量,拼接字符串连接. let i = 0; key={`infoItem-col-${i++}`}

  8. git 解决冲突问题

    问题描述: 一般来说,只要多人提交同一仓库,必然会有冲突的发生. Git解决 利用git解决冲突很简单,最常规的方法莫过于工作之前先更新整个project,完成之后及时提交.然而尽管这样做,也难免有人 ...

  9. 用 Python 快速实现 HTTP 和 FTP 服务器

      用 Python 快速实现 HTTP 服务器 有时你需临时搭建一个简单的 Web Server,但你又不想去安装 Apache.Nginx 等这类功能较复杂的 HTTP 服务程序时.这时可以使用  ...

  10. goldendict

    linux下的翻译词典,可以添加在线和离线词典,比window下的有道感觉强的不止100倍. 点击编辑—>dictionary,可以添加在线和离线词典,最好添加离线的把,我添加了好多在线的,go ...