package com.newedu.jb.day20.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 把当前项目目录下的hello.txt内容复制到当前项目目录下的b.txt中
*
* 程序分析:
* 1:使用 InputStream 读 hello.txt 的内容 到一个数组中。
* 2:将读取到数组,通过OutputStream 写入b.txt
*
*
*
*@author jerry
*
*/
public class FileCopyDemo {
publicstatic void main(String[] args) throws IOException {
//流操作三步走:
//第一步:创建流对象
InputStreamis = new FileInputStream("hello.txt");
OutputStreamos = new FileOutputStream("b.txt");
//第二步:操作流对象,(读 or 写)
inti = 0;
while((i=is.read())!=-1){
// System.out.println((char)i);
//输出 到输出流中
os.write(i);
}
//第三步:关闭流对象,输入输出流不分先后顺序
is.close();
os.close();
}
}
package com.newedu.jb.day20.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 四种复制文件的形式:
* 1:基本字节流每次读写一个字节
* 2:基本字节流每次读写一个字节数组
* 3:缓冲字节流每次读写一个字节
* 4:缓冲字节流每次读写一个字节数组
*
* 并且对比出那种方式最好?
*
* 结论:第四种最快,工作中建议使用第四种。
*@author jerry
*
*/
public class FileCopyDemo2 {
publicstatic void main(String[] args) throws IOException {
longstart = System.currentTimeMillis();
// method1();//42416ms
// method2();//105 ms
// method3();//443 ms
method4();//46 ms
longend = System.currentTimeMillis();
System.out.println("方法执行的时间:"+(end-start));
}
//1:基本字节流每次读写一个字节
publicstatic void method1() throws IOException{
//创建流对象
InputStreamis = new FileInputStream("D:\\dd\\d1\\a.mp3");
OutputStreamos = new FileOutputStream("D:\\dd\\d1\\copy1.mp3");
//操作流对象
inti = 0;
while((i=is.read())!=-1){
os.write(i);
}
//关闭流
is.close();
os.close();
}
//2:基本字节流每次读写一个字节数组
publicstatic void method2() throws IOException{
//创建流对象
InputStreamis = new FileInputStream("D:\\dd\\d1\\a.mp3");
OutputStreamos = new FileOutputStream("D:\\dd\\d1\\copy2.mp3");
//操作流对象
byte[]b = new byte[1024];
intlen = 0;
while((len= is.read(b))!=-1){
os.write(b,0, len);
}
//关闭流
is.close();
os.close();
}
//3:缓冲字节流每次读写一个字节
publicstatic void method3() throws IOException{
//创建流对象
InputStreamin = new FileInputStream("D:\\dd\\d1\\a.mp3");
OutputStreamout = new FileOutputStream("D:\\dd\\d1\\copy3.mp3");
BufferedInputStreambis = new BufferedInputStream(in);
BufferedOutputStreambos = new BufferedOutputStream(out);
//操作流对象
inti = 0;
while((i=bis.read())!=-1){
bos.write(i);
}
//关闭流
bis.close();
bos.close();
}
//4:缓冲字节流每次读写一个字节数组
publicstatic void method4() throws IOException{
//创建流对象
InputStreamin = new FileInputStream("C:\\Program Files (x86)\\tlxsoft\\屏幕录像专家 共享版 V2016\\LS2\\01IO流-递归运算.avi");
OutputStreamout = new FileOutputStream("D:\\dd\\d1\\copy5.avi");
BufferedInputStreambis = new BufferedInputStream(in);
BufferedOutputStreambos = new BufferedOutputStream(out);
//操作流对象
byte[]b = new byte[1024];
intlen = 0;
while((len= bis.read(b))!=-1){
bos.write(b,0, len);
}
//关闭流
bis.close();
bos.close();
}
}