Java代码拷贝文件的速度究竟有多快?

前言

最近学习Java到了流处理,其中有种流叫FileInputStream和FileOutputStream,简单来说,就是操作文件的,老师给我们示范了一个非常有趣的例子,用代码拷贝文件!

一直以来我对代码佩服的五体投地,觉得超级神奇,于是非常好奇Java代码拷贝的速度有多快,做出了以下一个小测试哈哈哈。

补充方法二:其实这个稍作改进,还是挺快的。。。

视频解说

代码

方法一:

package stream;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream; /**
* 文件的拷贝
* @author Administrator
*
*/
public class Example04 {
public static void main(String[] args) throws Exception {
//创建一个字节输入流,用于读取source文件夹的文件
InputStream in = new FileInputStream("source\\1.png");
//创建一个字节输出流,用于将读取的数据写入target文件夹的文件
OutputStream out = new FileOutputStream("target\\2.png");
//读数据
int len;
long begintime = System.currentTimeMillis();
while( (len = in.read() )!=-1) {
out.write(len);
}
long endtime = System.currentTimeMillis();
System.out.println("拷贝文件所消耗的时间是: "+(endtime-begintime)+" 毫秒");
//关闭流
in.close();
out.close();
}
}

方法二:

package stream;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream; /**
* 文件的拷贝(使用缓冲区拷贝文件)
* @author Administrator
*
*/
public class Example05 {
public static void main(String[] args) throws Exception {
//创建一个字节输入流,读取文件
InputStream in = new FileInputStream("source\\1.png");
//创建一个字节输出流,保存文件
OutputStream out = new FileOutputStream("target\\2.png");
//读数据
byte[] buff = new byte[1024];//定义字节数组,作成缓冲区
int len;//定义int类型的len,记住读取读入缓冲区的字节数
long begintime = System.currentTimeMillis(); while( (len = in.read(buff) ) != -1) {
//写数据
out.write(buff, 0, len);//从第一个字节开始,向文件中写入len个字节
} long endtime = System.currentTimeMillis();
System.out.println("拷贝文件所消耗的时间是: "+(endtime-begintime)+" 毫秒");
//关闭流
in.close();
out.close();
}
}

【Java】Java代码拷贝文件的速度的更多相关文章

  1. java中的拷贝文件FileChannel

    以前用Java拷贝文件,只知道写byte数组循环拷贝,今天知道了可以用FileChannel进行拷贝,上代码: 下边是传统的byte数组拷贝方法 </pre><pre name=&q ...

  2. Java Io 之拷贝文件性能比较

    前面我们共讨论了拷贝文件有三种方式: 1. 第一种,一个字节一个字节的进行拷贝文件操作. 2. 第二种,使用字节数据批量的进行拷贝文件操作. 3. 第三种,使用带缓冲输入输出流来拷贝文件. 那么哪一种 ...

  3. [JAVA]使用字节流拷贝文件

    import java.io.*; /** * @Description: * @projectName:JavaTest * @see:PACKAGE_NAME * @author:郑晓龙 * @c ...

  4. 原生Java代码拷贝目录

    拷贝.移动文件(夹),有三方包commons-io可以用,但是有时候有自己的需求,只能使用原生java代码,这时可以用以下几种方式进行拷贝: 1.使用系统命令(Linux)调用 此种方式对操作系统有要 ...

  5. java IO流 对文件操作的代码集合

    Io流 按照分类 有两种分类 流向方向: 有输入流和输出流 按照操作类型有:字节流和字符流 按照流向方向 字节流的一些操作 //读文件 FileInputStream fis = new FileIn ...

  6. Java 复制大文件方式(nio2 FileChannel 拷贝文件能力测试)

    目前为止,我们已经学习了很多 Java 拷贝文件的方式,除了 FileChannel 提供的方法外,还包括使用 Files.copy() 或使用字节数组的缓冲/非缓冲流.那个才是最好的选择呢?这个问题 ...

  7. [Java] 通过文件流拷贝文件

    package test.stream; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  8. C#和Java中执行SQL文件脚本的代码(非常有用)

    原文:C#和Java中执行SQL文件脚本的代码(非常有用) 我们在做程序的时候有事后会涉及到利用sql文件 直接执行,可是在sql文件中有很多注释,我们要一句一句的执行首先必须的得把sql文件解析 去 ...

  9. Java代码实现文件添加数字签名、验证数字签名

    Linux下实现加签.验签 1.使用OpenSSL 生成公钥和密钥: #用 OpenSSL, Linux 上自带,常用命令如下: #生成 RSA 私钥(传统格式的) openssl genrsa -o ...

  10. java——io、字节流缓冲区拷贝文件、字节缓冲流

    使用try catch finally关闭文件流: 写入文件: import java.io.*; public class exp{ public static void main(String[] ...

随机推荐

  1. LoadRunner——安装教程以及创建与录制(一)

    theme: channing-cyan 1. loadrunner12|loadrunner12官方版下载(附安装教程)+网盘下载+汉化包 CSDN下载及安装教程: https://blog.csd ...

  2. 三分钟搭建一个自己的 ChatGPT (从开发到上线)

    原文链接:https://icloudnative.io/posts/build-chatgpt-web-using-laf/ OpenAI 已经公布了 ChatGPT 正式版 API,背后的新模型是 ...

  3. 【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)

    问题描述 使用Azure Kubernetes服务(AKS),可以通过kubectl连接 pod 中查看日志,但是如何来查看节点的系统日志呢?如是否有ubuntu系统升级的记录? 问题解答 是的,可以 ...

  4. 小霸王、红白机、FC游戏、街机游戏在线玩的网站

    前段时间小笨就想做一个红白机在线玩的网站,作为90后,也玩过不少小霸王fc游戏,于是花了两个星期时间做了出来.前端界面略丑,因为小笨不是专做前端的,就将就一下吧,哈哈!网站暂时添加了数款怀旧游戏,包括 ...

  5. 如何理解redis两种不同的持久化方式

    其实redis就是一种高级的以键值对形式存储数据的数据库,而它的好处就是他可以支持数据的持久化,其实redis之所以会有这样的优点,主要是因为,redis的数据都是存放在内存中的,如果不配置持久化,那 ...

  6. git 从本地仓库提交至远程仓库 报错:error: failed to push some refs to "xxx"

    **原因**:远程库里面有个文件,但是本地没有这个文件,比如: README.md,完全提交上去会覆盖之前的文件,所以git会提示报错警告! **解决方案**:如果只有 README.md文件,可以使 ...

  7. Windows Server 远程桌面(RDP)使用公网可信机构所签发的SSL证书的方法

    Windows Server 远程桌面默认使用系统自签名证书,在任何终端进行远程桌面登录时均会提示证书告警 虽然可以通过勾选下方"不再询问我是否连接到此计算机"选项使之后登录不再提 ...

  8. Rancher系列文章-Rancher v2.6使用脚本实现导入集群

    概述 最近在玩 Rancher, 先从最基本的功能玩起, 目前有几个已经搭建好的 K8S 集群, 需要批量导入, 发现官网已经有批量导入的文档了. 根据 Rancher v2.6 进行验证微调后总结经 ...

  9. 一个.Net简单、易用的配置文件操作库

    在我们日常项目开发中,操作INI/CFG配置文件,往往会通过调用WinAPI来实现,WinAPI接口参数只支持字符串,而我们项目中,往往数据类型是多种多样的,在保存和获取配置值,我们就要进行类型的转换 ...

  10. 访问不到tomcat下的静态资源文件

    问题:idea+tomcat 测试Servlet,居然访问不到与WEB-INF同级的静态资源1.html.又不是访问WEB-INF里的文件.... 分析:可能是开发目录中的文件没有自动复制到部署目录. ...