拷贝
拷贝方式:
- 单个 字节/字符 的拷贝
- 按照 字节/字符 数组拷贝
测试
- 单个字节和字节数组读取时间
- 非缓冲与带缓冲的读取时间
package com.bigdat.java.day25;
import java.io.*;
/*
测试
单个字节和字节数组读取时间
非缓冲与带缓冲的读取时间
*/
public class CopyDemo2 {
public static void main(String[] args) {
// oneTest(); 单个字节读取视屏的时间为2107904毫秒
// shuZuTest(); 数组读取视屏的时间为2392毫秒
// OneBufferText(); 缓冲单字节读取视屏的时间为:9503毫秒
// shuzuBufferText(); 缓冲字节数组读取视屏的时间为:547毫秒
}
//测试单个字符读取一段视屏的时间
public static void oneTest(){
//创建读取对象
FileInputStream fileInputStream = null;
//创建写出对象
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream("D:\\我被改名了\\17day24 字节流速度对比,编码表 2.mp4");
fileOutputStream = new FileOutputStream("D:\\我被改名了\\copy1.mp4");
Long start = System.currentTimeMillis();
//开始读取
int len = 0;
while((len = fileInputStream.read()) != -1){
fileOutputStream.write(len);
}
long end = System.currentTimeMillis();
System.out.println("单个字节读取视屏的时间为"+(end-start)+"毫秒");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fileOutputStream.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//测试字节数组copy视屏的时间
public static void shuZuTest(){
//创建读取对象
FileInputStream fileInputStream = null;
//创建写出对象
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream("D:\\我被改名了\\17day24 字节流速度对比,编码表 2.mp4");
fileOutputStream = new FileOutputStream("D:\\我被改名了\\copy2.mp4");
Long start = System.currentTimeMillis();
//开始读取
int len = 0;
byte[] bytes = new byte[1024];
while((len = fileInputStream.read(bytes)) != -1){
fileOutputStream.write(bytes, 0, len);
}
long end = System.currentTimeMillis();
System.out.println("数组读取视屏的时间为"+(end-start)+"毫秒");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fileOutputStream.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//缓冲流单个字节读取视屏测试时间
public static void OneBufferText(){
//创建读入字节的对象
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream("D:\\我被改名了\\17day24 字节流速度对比,编码表 2.mp4"));
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("D:\\我被改名了\\copy3.mp4"));
//开始时间
long start = System.currentTimeMillis();
//开始写入到程序中
int len = 0;
while((len = bufferedInputStream.read()) != -1){
bufferedOutputStream.write(len);
}
long end = System.currentTimeMillis();
System.out.println("缓冲单字节读取视屏的时间为:"+(end-start));
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
bufferedOutputStream.close();
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void shuzuBufferText(){
//创建读入字节的对象
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream("D:\\我被改名了\\17day24 字节流速度对比,编码表 2.mp4"));
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("D:\\我被改名了\\copy4.mp4"));
//开始时间
long start = System.currentTimeMillis();
//开始写入到程序中
int len = 0;
byte[] bytes = new byte[1024];
while((len = bufferedInputStream.read(bytes)) != -1){
bufferedOutputStream.write(bytes, 0, len);
}
long end = System.currentTimeMillis();
System.out.println("缓冲字节数组读取视屏的时间为:"+(end-start)+"毫秒");
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
bufferedOutputStream.close();
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package com.bigdat.java.day25;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
将 D盘中的p.txt 文件拷贝一份到 D 盘中的 q.txt 文件
*/
public class CopyDemo1 {
public static void main(String[] args) {
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
//创建文件输入流
fileInputStream = new FileInputStream("D:\\p.txt");
//创建文件的输出流
fileOutputStream = new FileOutputStream("D:\\w.txt");
//开始读取文件
//方法一:一个字节一个字节的读
// int len = 0;
// while ((len = fileInputStream.read()) !=-1){
// fileOutputStream.write(len);
// }
//方式二:利用字节数组读取
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fileInputStream.read(bytes)) != -1){
System.out.println(len);
fileOutputStream.write(bytes, 0, len);
}
System.out.println("复制成功!");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fileOutputStream.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}