java基础之复制文件(IO流)

您所在的位置:网站首页 io流复制文件和目录 java基础之复制文件(IO流)

java基础之复制文件(IO流)

2023-12-11 10:51| 来源: 网络整理| 查看: 265

在学习javaweb的时候,以及在没有打好基础直接去学习框架时都用到了文件下载,文件上传,一直不知道其中的原理,今天特意花了一个小时去学习 java基础的io流

在学习io流时要有一切皆字节的思想!

不管是文件上传,下载,复制都是字节的输入输出操作,所以,在编写这些程序时,必须要了解字节的输入输入操作即IO操作

复制文件的逻辑:

创建一个字节输入流对象,构造方法中绑定要读取的数据源创建一个字节输出流对象,构造方法中绑定要写入的目的地使用字节输入流对象中的read方法读取文件使用字节输出流对象中的write方法,把读取到的文件写入到目的地文件中释放资源 方法一:

这个方法相对于耗时较长。我在我本机将一张图片从一个文件夹复制到另一个文件中

package top.klxy.itheima; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * @Author: SmallWang * @Date: 2020/7/20 0020 09:02 * @Version: 1.0 */ /* 文件复制 : 一读一写 数据源: 目的地: */ public class CopyFile { public static void main(String[] args) throws IOException { //开始时间 毫秒 long s = System.currentTimeMillis(); //1.创建一个字节输入流对象,构造方法中绑定要读取的数据源 FileInputStream fis = new FileInputStream("E:\\1.jpg"); //2.创建一个字节输出流对象,构造方法中绑定要写入的目的地 FileOutputStream fos = new FileOutputStream("D:\\SelfStudy\\itheima\\2.jpg"); //方法一 耗时:703毫秒 //3.使用字节输入流对象中的方法read读取文件 int len = 0; while ((len = fis.read()) != -1){ //4.使用字节输出流中的方法write,把读取到的字节写入到目的地文件中 fos.write(len); } //释放资源 fis.close(); fos.close(); //结束时间 long e = System.currentTimeMillis(); System.out.println("这个程序耗时" + (e-s) + "毫秒!"); } }

运行结果:

方法二

耗时短

package top.klxy.itheima; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * @Author: SmallWang * @Date: 2020/7/20 0020 09:02 * @Version: 1.0 */ /* 文件复制 : 一读一写 数据源:E:\\1.jpg 目的地:D:\\SelfStudy\\itheima\\2.jpg */ public class CopyFile { public static void main(String[] args) throws IOException { //开始时间 毫秒 long s = System.currentTimeMillis(); //1.创建一个字节输入流对象,构造方法中绑定要读取的数据源 FileInputStream fis = new FileInputStream("E:\\1.jpg"); //2.创建一个字节输出流对象,构造方法中绑定要写入的目的地 FileOutputStream fos = new FileOutputStream("D:\\SelfStudy\\itheima\\2.jpg"); //方法二 耗时: 2毫秒 //使用数组缓冲多个字节 写入多个字节 byte[] bytes = new byte[1024]; //3.使用字节输入流对象中的方法read读取文件 int len = 0; //每次读取有效字节数 while ((len = fis.read(bytes)) != -1){ //4.使用字节输出流中的方法write,把读取到的字节写入到目的地文件中 fos.write(bytes,0,len); } //释放资源 fis.close(); fos.close(); //结束时间 long e = System.currentTimeMillis(); System.out.println("这个程序耗时" + (e-s) + "毫秒!"); } }

运行结果:

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3