java文件复制速度_【Java】Java代码拷贝文件的速度

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();

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim 的配置详解/键盘映射配置详解

文章目录特性设置配置快捷键(键映射配置)键盘符号键盘映射命令和不同模式的对应关系取消键盘映射查看键盘映射在目录 /etc/ 下面,有个名为 vimrc 的文件,这是系统中公共的 vim 配置文件,对所有用户都有效。而在每个…

开闭原则 依赖倒置原则_坚实原则:依赖倒置原则

开闭原则 依赖倒置原则到目前为止,我们只研究了单一职责 , 打开/关闭 , liskov替换和接口隔离原则。 依赖倒置是我们所要研究的最后一个原理之一。 该原则指出 答:高级模块不应依赖于低级模块。 两者都应依赖抽象。 B.抽象不应…

java的传值调用什么_Java的传值调用

(本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨)引子之所以写这篇文章是因为前些天写了一篇《Java中真的只有值传递么?》探讨了网上关于Java只有值传递的说法,当时写这篇文章的缘由是因为之前看的文章讲解的Java只…

Linux 命令之 apt -- Debian Linux 新一代的软件包管理工具

文章目录 一、命令介绍二、常用命令三、常用选项四、命令示例(一)安装、更新和删除软件包安装指定的软件包安装软件包的同时修复依赖问题安装指定版本的软件包安装本地的 deb 包文件删除软件包,保留配置文件删除软件包,不保留配置文件将已经安装的但是不再使用的软件包删除…

liskov替换原则_坚实原则:Liskov替代原则

liskov替换原则以前,我们深入研究了坚实的原则,包括单一责任和开放/封闭原则。 Liskov替代原则(LSP)是子类型关系的一种特殊定义,称为(强)行为子类型, 假设对象S是对象T的子类型&a…

java 聚合_Java聚合

聚合如果一个类有一个类的实体引用(类中的类),则它称为聚合。 聚合表示HAS-A关系。考虑有一种情况,Employee对象包含许多信息,例如:id,name,emailId等。它包含另一个类对象:address,…

Linux 命令之 dpkg --Debian 的一个底层包管理工具

文章目录 一、命令介绍二、deb 软件包命名规则三、软件包管理相关文件/目录四、dpkg 数据库五、子命令六、常用选项(一)安装、升级和删除软件包(二)查询和检验软件包(三)其它七、命令示例(一)安装、升级和卸载软件包安装指定的软件包解开软件包到系统目录但不配置配置软…

java jep_Java 10 – JEP 286:局部变量类型推断

java jepJava 10即将发布,RC Build可在此处获得 。 可在此处找到此发行版的目标功能。 在针对Java 10的所有JEP中,开发人员社区中最有趣且最受关注的是286:Local-Variable Type Inference 。 什么是局部变量类型推断? 我们在Java…

java ffmpeg 视频水印_java 实现视频转换通用工具类:视频加水印-Ffmpeg(五-1)

java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)说明:视频加水印支持右上角、左上角、左下角、右下角、底部居中几个方位1.根据水印文字---添加视频水印/*** 根据水印文字---添加视频水印* param srcPath 原视频路径* param tarVideoPath 生成后的…

手动 clone 安装 Homebrew

文章目录 手动 clone 安装 HomebrewHomebrew 换源替换 homebrew 源替换 homebrew-core 源替换 homebrew-bottles 源bash用户zsh 用户更新 Homebrew手动 clone 安装 Homebrew 首先进入 homebrew 目录:cd "$(brew --repo)/Library/Taps/homebrew/"创建目录 homebrew-c…

lambda 匿名内部类_Lambda运行时内部:窥视无服务器巢穴

lambda 匿名内部类有没有想过lambda里面是什么样的? 不要怀疑了 让我们找出答案。 自从2014年问世以来,AWS的lambda函数就成为一个热门话题,在无服务器计算领域开辟了全新的历史。 无状态,零维护,按次执行的好东西实际…

java VM argument_java之program arguments与VM arguments

program arguments 中的值作为 args[] 的参数传入的,而 VM Arguments 是设置的虚拟机的属性。program arguments 是要传给你的应用程序的,它通过主函数中的 args 来传值。 VM arguments是系统的属性,要传给 java 虚拟机的。如图:是…

java iterator 嵌套_Java中的集合嵌套

import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;public classDemo06 {public static voidmain(String[] args) {//大 MapHashMap> oraclenew HashMap>();//小MapHashMap java1018 new HashMap();HashMap java1227 new H…

Linux/Unix 如何查看 man 搜索到的手册页(manual page)的位置及复制手册页的内容

文章目录命令 man 是如何搜索手册页的?如何查看手册页所在的路径通过管道输出给 vim命令 man 是如何搜索手册页的? man uses a sophisticated method of finding manual page files, based on the invocation options and environment variables, the …

xml不利于调试_流利的接口不利于维护

xml不利于调试流畅的界面 (最初由Martin Fowler 创造)是一种与OOP中的对象进行通信的非常便捷的方式。 它使他们的外墙更易于使用和理解。 但是,它破坏了它们的内部设计,使它们更难以维护。 Marco Pivetta在他的博客文章Fluent In…

java输入月份求天数_java输入年份,月份,输出当月天数

package 第二次作业; public class 第二题 { //java文件名 public static void main(String[] args) { //相当于创建主函数 String 年份 = javax.swing.JOptionPane.showInputDialog("输入一个年份:"); //求出输…

java 换行 运算符格式_Java代码样式运算符换行格式

java 换行 运算符格式上周,我发现了什么决定了我在较长时间里一直在努力解决的问题的决定:是否放置&& , ||之类的运算符 或在同一行或下一行。 在构造布尔表达式或隐含字符串时,我们可能需要中断长行。 根据《 Google Ja…

pipeline java_架构模式:pipeline

知名的 Pipeline 模式unix 的 pipelinecat helloworld.txt | grep "hello world" | rev | > output.txt读取文本内容,并过滤 “hello world”,然后反转字符,将最终结果输出到 output.txtWeb 框架中间件Laravel 中的管道Laravel …

MacOS 系统使用命令安装软件包

文章目录 使用 Homebrew 安装软件包先安装 Homebrew使用命令 brew 安装软件包使用命令 installer 安装 pkg 软件包使用命令安装 dmg 格式的软件包包含普通的应用程序文件的 dmg 文件如何使用命令完成安装呢?包含 pkg 安装程序的 dmg 文件又该如何通过命令完成安装呢?Linux 操…

身份证验证 校验码_用户身份验证最佳做法清单

身份证验证 校验码用户身份验证是每个Web应用程序共享的功能。 我们已经实施了很多次了,所以早就应该完善它了。 然而,错误无时无刻不在。 造成这种情况的部分原因是,可能出错的事情列表很长。 您可能会错误地存储密码,可能会具有…