多种流对文件的复制
本期分享的是编程中的IO流的知识点:流有字节输入输出流和字符输入输出
字节输入流(外界—>程序) | InputStream |
---|---|
字节输出流(程序—>外界) | OutputStream |
字符输入流(外界–>程序) | InputStreamReader |
字符输出流(程序—>外界) | OutputStreamWriter |
字符缓冲输入流(外界—>程序) | BufferedReader |
字符缓冲输出流(程序—>外界) | BufferedWriter |
一、复制文件需使用的流的类型
字节缓冲输入流 | BufferedInputStream |
---|---|
字节缓冲输出流 | BufferedOutputStream |
字符输入流 | InputStreamReader |
字符输出流 | OutputStreamWriter |
字符缓冲输入流 | BufferedReader |
字符缓冲输出流 | BufferedWriter |
注:流在使用之后一定要关闭,关闭时遵循先用后关的原则
二、题目一:使用字节缓冲输入输出流复制文件
public static void main(String[] args) throws Exception {
/**
* BufferedInputStream:字节缓冲输入流(外界--->程序)
*/
//定义一个开始的时间
long begin = System.currentTimeMillis();
//创建字节输入流
FileInputStream is = new FileInputStream("demo/test.txt");
//创建字节输出流
FileOutputStream os = new FileOutputStream("demo/test1.txt");
//创建字节缓冲输入流
BufferedInputStream bs = new BufferedInputStream(is);
//创建字节缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(os);
byte[] b = new byte[1024];
int length;
while((length=bs.read())!=-1){
bos.write(b,0,length);
}
System.out.print("字节缓冲输入输出流复制文件成功"+"\t");
//定义一个结束的时间
long end = System.currentTimeMillis();
System.out.println("时间为:"+(end-begin)+"毫秒");
//关闭流
bos.close();
bs.close();
os.close();
is.close();
三、题目二:使用字符输入输出流复制文件
/**
* InputStreamReader:字符输入流(外界-->程序)
* OutputStreamWriter:字符输出流(程序--->外界)
* 使用字符输入输出流复制文件
*/
long begin1 = System.currentTimeMillis();
//创建字节输入流
FileInputStream is1 = new FileInputStream("demo/test.txt");
//创建字节输出流
FileOutputStream os1 = new FileOutputStream("demo/test2.txt");
//创建字符输入流
InputStreamReader isr = new InputStreamReader(is1);
//创建字符输出流
OutputStreamWriter osw = new OutputStreamWriter(os1);
byte[] b1 = new byte[1024];
int length1;
while((length1=isr.read())!=-1) {
osw.write(length1);
}
System.out.print("使用字符输入输出流复制文件成功"+"\t");
long end1 = System.currentTimeMillis();
System.out.println("时间为:"+(end1-begin1)+"毫秒");
osw.close();
isr.close();
os1.close();
四、题目三:使用字符缓冲输入输出流复制文件
long begin2 = System.currentTimeMillis();
//使用字符缓冲输入输出流复制文件
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream("demo/斗破苍穹1.txt")));
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("demo/斗破苍穹2.txt")));
//文件复制
int length2;
while((length2=br.read())!=-1){
bw.write(length2);
}
System.out.print("符缓冲输入输出流复制文件成功"+"\t");
long end2 = System.currentTimeMillis();
System.out.println("时间为:"+(end2-begin2)+"毫秒");
bw.close();
br.close();
}
}
我的几个题目的作业都是写在一个main方法里面的,所以在看的时候要注意一下~~
五、运行结果展示
今天的分享就到此结束了,流这一块一开始接触的时候会有点伤脑的,所以在学习的时候要花的功夫多一点,祝各位小伙伴都能轻松搞定每一块的学习。