JavaSE-18.2.4【案例-字符流复制Java文件(基础版实现、改进版实现)】

 1 package day9.lesson2;
 2 
 3 import java.io.*;
 4 
 5 /*
 6 2.7 案例-字符流复制Java文件
 7     根据数据源创建字符输入流对象
 8     根据目的地创建字符输出流对象
 9     读写数据,复制文件
10     释放资源
11  */
12 public class CopyJavaDemo01 {
13     public static void main(String[] args) throws IOException {
14         InputStreamReader isr = new InputStreamReader(new FileInputStream("stage2\\src\\day9\\lesson2\\StringDemo.java"));
15         OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("stage2\\day9_lesson2_copy\\CopyStringDemo.java"));
16 
17         //一次读一个字符数据
18         /*int ch;
19         while ((ch=isr.read()) != -1){
20             osw.write(ch);
21         }*/
22 
23         //一次读一个字符数组数据
24         char[] chs = new char[1024];
25         int len;
26         while ((len=isr.read(chs)) != -1){
27             osw.write(chs, 0, len);
28         }
29 
30         osw.close();
31         isr.close();
32     }
33 }
 1 package day9.lesson2;
 2 
 3 import java.io.FileReader;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 
 7 /*
 8 2.8 案例-字符流复制Java文件(改进版)
 9 
10     转换流(InputStreamReader & OutputStreamWriter)的名字较长,
11     而我们常见的操作都是按照本地默认编码实现的,
12     为了简化书写,转换流提供了对应的子类
13     PS:此处“常见操作”不含编解码转换,编解码转换时还得严格用转换流实现
14 
15     FileReader (extends InputStreamReader)
16         用于读取字符文件的便捷类
17         构造方法:FileReader(String fileName)
18     FileWriter (extends OutputStreamWriter)
19         用于写入字符文件的便捷类
20         构造方法:FileWriter(String fileName)
21 
22    分析
23        xxx.java(数据源) --- 读数据 --- Reader(抽象类) --- InputStreamReader(实现类)  --- FileReader(便捷类)
24        xxx.java(目的地) --- 写数据 --- Writer(抽象类) --- OutputStreamWriter(实现类) --- FileWriter(便捷类)
25  */
26 public class CopyJavaDemo02 {
27     public static void main(String[] args) throws IOException {
28         FileReader fr = new FileReader("stage2\\src\\day9\\lesson2\\StringDemo.java");
29         FileWriter fw = new FileWriter("stage2\\day9_lesson2_copy\\CopyStringDemo.java");
30 
31         //方式1
32         /*int ch;
33         while ((ch=fr.read()) != -1){
34             fw.write(ch);
35         }*/
36 
37         //方式2
38         char[] chars = new char[1024];
39         int len;
40         while ((len=fr.read(chars)) != -1){
41             fw.write(chars, 0, len);
42         }
43 
44         fw.close();
45         fr.close();
46     }
47 }

 

posted @ 2021-06-07 09:17  yub4by  阅读(39)  评论(0编辑  收藏  举报