IO流学习之字符流(二)
用字符流完成文档的复制:
测试文档:
代码1:
1 package InputOutput; 2 3 import java.io.FileReader; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 7 public class CopyFileDemo1 { 8 public static void main(String[] args) throws IOException { 9 // 指定读取的文件位置 10 String path1 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\CopyReader.txt"; 11 // 指定写入的文件位置 12 String path2 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\CopyWriter.txt"; 13 // 创建输入流对象关联数据源文件 14 FileReader reader = new FileReader(path1); 15 // 创建输出流对象关联目的地文件 16 FileWriter writer = new FileWriter(path2); 17 // 读取文件 18 int flag = 0; 19 // 获取复制前时间 20 long time1 = System.currentTimeMillis(); 21 while ((flag = reader.read()) != -1) { 22 writer.write(flag); 23 } 24 // 获取复制后时间 25 long time2 = System.currentTimeMillis(); 26 // 释放资源 27 writer.close(); 28 reader.close(); 29 // 输出时间差 30 System.out.println("时间 : " + (time2 - time1)); 31 } 32 }
结果:
上面代码使用字符流一个字符一个字符的读取,写入,下面尝试用字符数组进行复制文档,数据少时没有什么区别,但数据多了可以提高很多效率!
代码:
1 package InputOutput; 2 3 import java.io.FileReader; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 7 public class CopyFileDemo2 { 8 public static void main(String[] args) throws IOException { 9 // 指定读取的文件位置 10 String path1 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\CopyReader.txt"; 11 // 指定写入的文件位置 12 String path2 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\CopyWriter.txt"; 13 // 创建输入流对象关联数据源文件 14 FileReader reader = new FileReader(path1); 15 // 创建输出流对象关联目的地文件 16 FileWriter writer = new FileWriter(path2); 17 // 读取文件 18 int flag = 0; 19 // 用字符组读取数据 20 char[] demo = new char[1024]; 21 // 获取复制前时间 22 long time1 = System.currentTimeMillis(); 23 while ((flag = reader.read(demo)) != -1) { 24 writer.write(demo, 0, flag); 25 } 26 // 获取复制后时间 27 long time2 = System.currentTimeMillis(); 28 // 释放资源 29 writer.close(); 30 reader.close(); 31 // 输出时间差 32 System.out.println("时间 : " + (time2 - time1)); 33 34 } 35 }
结果: