IT序号网

四种复制文件的方法

shasha 2021年05月25日 编程语言 300 0
  1 package com.hxl; 
  2  
  3 import java.io.BufferedInputStream; 
  4 import java.io.BufferedOutputStream; 
  5 import java.io.FileInputStream; 
  6 import java.io.FileOutputStream; 
  7 import java.io.IOException; 
  8  
  9 public class Test { 
 10     public static void main(String[] args) throws IOException { 
 11         long start = System.currentTimeMillis(); 
 12         // 测试文件大小为3.12MB 
 13         // 运行耗时:21707毫秒 
 14         method1("E:\\EditPlus4.3安装程序及说明.zip", "C:\\Users\\Administrator\\Desktop\\EditPlus4.3安装程序及说明.zip"); 
 15         // 运行耗时:76毫秒 
 16         // method2("E:\\EditPlus4.3安装程序及说明.zip", "C:\\Users\\Administrator\\Desktop\\EditPlus4.3安装程序及说明.zip"); 
 17         // 运行耗时:294毫秒 
 18         // method3("E:\\EditPlus4.3安装程序及说明.zip", "C:\\Users\\Administrator\\Desktop\\EditPlus4.3安装程序及说明.zip"); 
 19         // 运行耗时:54毫秒 
 20         // method4("E:\\EditPlus4.3安装程序及说明.zip", "C:\\Users\\Administrator\\Desktop\\EditPlus4.3安装程序及说明.zip"); 
 21         long end = System.currentTimeMillis(); 
 22         System.out.println("运行耗时:" + (end - start) + "毫秒"); 
 23     } 
 24  
 25     // 基本字节流一次读取一个字节复制文件 
 26     public static void method1(String src, String dest) throws IOException { 
 27         // 数据源 
 28         FileInputStream fis = new FileInputStream(src); 
 29         // 目的位置 
 30         FileOutputStream fos = new FileOutputStream(dest, true); 
 31         // read()方法返回值为获取到的那个字符的ASCII码值,若没有获取到,则返回-1 
 32         int byt = 0; 
 33         while ((byt = fis.read()) != -1) { 
 34             // write(int 
 35             // b)方法指的是将字节数据(主要因为read的返回值范围是0~255和-1,而write此时传参若为byte显然不合适了)写入(复制到)文件 
 36             // 经测试知,传-1显示了一段空格(不是Tab建),可以传0~255和-1以外的int值,但用记事本打开是乱码(以'?'表示) 
 37             fos.write(byt); 
 38         } 
 39         // 关闭输出流 
 40         fos.close(); 
 41         // 关闭输入流 
 42         fis.close(); 
 43     } 
 44  
 45     // 基本字节流一次读取一个字节数组复制文件 
 46     public static void method2(String src, String dest) throws IOException { 
 47         // 数据源 
 48         FileInputStream fis = new FileInputStream(src); 
 49         // 目的位置 
 50         FileOutputStream fos = new FileOutputStream(dest); 
 51         // 定义单次读取字节数组的大小,一般就写1024 
 52         byte[] bys = new byte[1024]; 
 53         // read(byte[] bys)方法返回值为获取到的字节个数,若没有获取到,则返回-1 
 54         int length = 0; 
 55         while ((length = fis.read(bys)) != -1) { 
 56             // write(byte[] bys,int off,int length)方法指的是从指定字节数组的指定位置开始写入(复制到)文件 
 57             fos.write(bys, 0, length); 
 58         } 
 59         // 关闭输出流 
 60         fos.close(); 
 61         // 关闭输入流 
 62         fis.close(); 
 63     } 
 64  
 65     // 高效字节流一次读取一个字节复制文件 
 66     public static void method3(String src, String dest) throws IOException { 
 67         // 数据源 
 68         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src)); 
 69         // 目的位置 
 70         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dest)); 
 71         // read()方法返回值为获取到的那个字符的ASCII码值,若没有获取到,则返回-1 
 72         int byt = 0; 
 73         while ((byt = bis.read()) != -1) { 
 74             // write(int b)方法指的是将字节数据(主要因为read的返回值范围是0~255和-1,而write此时传参若为byte显然不合适了)写入(复制到)文件 
 75             // 经测试知,传-1显示了一段空格(不是Tab建),可以传0~255和-1以外的int值,但用记事本打开是乱码(以'?'表示) 
 76             bos.write(byt); 
 77         } 
 78         // 关闭输出流 
 79         bos.close(); 
 80         // 关闭输入流 
 81         bis.close(); 
 82     } 
 83  
 84     // 高效字节流一次读取一个字节数组复制文件 
 85     public static void method4(String src, String dest) throws IOException { 
 86         // 数据源 
 87         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src)); 
 88         // 目的位置 
 89         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dest)); 
 90         // 定义单次读取字节数组的大小,一般就写1024 
 91         byte[] bys = new byte[1024]; 
 92         // read(byte[] bys)方法返回值为获取到的字节个数,若没有获取到,则返回-1 
 93         int length = 0; 
 94         while ((length = bis.read(bys)) != -1) { 
 95             // write(byte[] bys,int off,int length)方法指的是从指定字节数组的指定位置开始写入(复制到)文件 
 96             bos.write(bys, 0, length); 
 97         } 
 98         // 关闭输出流 
 99         bos.close(); 
100         // 关闭输入流 
101         bis.close(); 
102     } 
103 }

评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

批量改文件名