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 }

结果:

原文地址:https://www.cnblogs.com/Bernard94/p/11256692.html