Java(四)
下面的代码可以实现以字节为单位复制文件的功能,适合复制非文本类型的文件,为了更清楚的观测运行速率,我加入了程序计时器,代码如下:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; public class Yuan {
/**
* @param args
*/
public static void main(String[] args) {
long startMili=System.currentTimeMillis();
try {
FileInputStream fis = new FileInputStream ("a.mp3");
FileOutputStream fos = new FileOutputStream ("temp.mp3");
int read = fis.read();
15 while ( read != -1 ) {
16 fos.write(read);
17 read = fis.read();
18 }
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
long endMili=System.currentTimeMillis();
System.out.println("总耗时为:"+(endMili-startMili)+"毫秒");
}
}
运行效果:

但是,这段代码在复制如mp3等大文件时,运行效率很低,课后我对以上代码进行了改进:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; public class Copys {
/**
* @param args
*/
public static void main(String[] args) {
long startMili=System.currentTimeMillis();
try {
FileInputStream fis = new FileInputStream ("a.mp3");
FileOutputStream fos = new FileOutputStream ("temp.mp3");
byte[] bys = new byte[1024];
int len = 0;
16 while ((len = fis.read(bys)) != -1) {
17 fos.write(bys, 0, len);
18 }
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
long endMili=System.currentTimeMillis();
System.out.println("总耗时为:"+(endMili-startMili)+"毫秒");
}
}
注:红色代码为改进前后的代码对比
运行效果:

总结:
1. 字节流拷贝文件步骤如下:
①.构造文件字节输入输出流
②.创建一个字节数组,用来指定每次复制的字节大小
③.输入流从源文件读取字节,输出流将字节写入文件
2. fis.read(bys)的作用是从源文件最多读取bys.length字节的数据送给bys数组,返回的是读入的字节总数。
本例中bys.length的长度指定为1024000,当最后一次不足1024000,例如只剩下5000字节时,返回的就是5000,此时所有字节读取完毕。下一次读入时由于已到达文件末尾,返回-1。
fos.write(bys, 0, len)意思是将byte数组从偏移量0开始的n个字节写入文件输出流。
3. 程序结束后要关闭输入输出流。
Java(四)的更多相关文章
- Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异步任务你还只是如下new T ...
- Java四种线程池
Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor 时间:20 ...
- Java四种引用包括强引用,软引用,弱引用,虚引用。
Java四种引用包括强引用,软引用,弱引用,虚引用. 强引用: 只要引用存在,垃圾回收器永远不会回收Object obj = new Object();//可直接通过obj取得对应的对象 如obj.e ...
- Pascal、VB、C#、Java四种语法对照表
因为工作原因,自学会了vb后陆续接触了其它语言,在工作中经常需要与各家使用不同语言公司的开发人员做程序对接,初期特别需要一个各种语法的对照比,翻看了网络上已有高人做了整理,自己在他基础上也整理了一下, ...
- Java四种引用--《深入理解Java虚拟机》学习笔记及个人理解(四)
Java四种引用--<深入理解Java虚拟机>学习笔记及个人理解(四) 书上P65. StrongReference(强引用) 类似Object obj = new Object() 这类 ...
- (转载)new Thread的弊端及Java四种线程池的使用
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new ...
- 不可访问内存 Java四种引用包括强引用,软引用,弱引用,虚引用
小结: 1.不可访问内存是指一组没有任何可访问指针指向的由计算机程序进行动态分配的内存块. 2.垃圾收集器能决定是否一个对象还是可访问的:任何被确定不可访问的对象将会被释放. https://zh.w ...
- 线程池是什么?Java四种线程池的使用介绍
使用线程池的好处有很多,比如节省系统资源的开销,节省创建和销毁线程的时间等,当我们需要处理的任务较多时,就可以使用线程池,可能还有很多用户不知道Java线程池如何使用?下面小编给大家分享Java四种线 ...
- java四种引用及在LeakCanery中应用
java 四种引用 Java4种引用的级别由高到低依次为: StrongReference > SoftReference > WeakReference > PhantomRefe ...
- java四种对象引用类型
java四种对象引用类型 对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序 ...
随机推荐
- 用orb-slam2跑RGB-D Example中的TUM Dataset
链接在此:https://github.com/raulmur/ORB_SLAM2 1.按照要求下载数据集,我下载的是rgbd_dataset_freiburg2_pioneer_360,将其解压到你 ...
- Python从零开始(1)新手常问
如何清除屏幕 如果是在Windows命令行中,输入 import os os.system('cls') 在IDEL中没有找到完美的清除屏幕的方法 网上提到用新建窗口的方法 如何退出Python提示符 ...
- python爬取数据保存入库
import urllib2 import re import MySQLdb class LatestTest: #初始化 def __init__(self): self.url="ht ...
- [css3]叉叉旋转效果
.close_frame{display:inline-block;height:14px;width:14px;background:url("../images/closeiframe. ...
- oracle 查看锁死的表,锁死的进程
select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode f ...
- 实验8 SQLite数据库操作
实验报告 课程名称 实验8 SQLite数据库操作 实验日期 2016.5.6 实验项目名称 多媒体应用开发 实验地点 S30010 实验类型 □验证型 √设计型 □综合型 学 时 一 ...
- lucene中Field.Index,Field.Store详解
lucene在doc.add(new Field("content",curArt.getContent(),Field.Store.NO,Field.Index.TOKENIZE ...
- jQuery focus、blur事件 添加、删除类名
jQuery.focusblur = function(ele,className){ var focusblurid = $(ele); focusblurid.focus(function(){ ...
- 配置Java开发IDE
http://www.cnblogs.com/feichexia/archive/2012/11/07/Vim_JavaIDE.html
- JDK安装与环境变量配置
1.安装JDK 选择安装目录 安装过程中会出现两次 安装提示 .第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的不同文件夹中.(不能都安装在java文件夹的根目 ...