字符流,字节流总结

想要知道开发用到哪些对象,只要通过四个明确即可
1,明确源和目的
    愿:InputStream Reader
    目的:OutputStream Writer
2,明确数据是否是纯文本数据
    愿:    愿:是纯文本:Reader
            否:InputSteam
    目的:是纯文本Writer
        否:OutputStream
3,明确具体设备
    原设备:
        硬盘:File
        键盘:System.in
        内存:数组
        网络:Socker流
    目的设备
        硬盘:File
        键盘:System.out
        内存:数组
        网络:Socker流
4,是否需要其他额外功能
    1,是否需要高效(缓冲区)
        是,就加上buffer
===================================================    
需求1:复制一个文本文件
    1,明确源和目的
    源:InputStream Reader
    目的:OutputStream Writer
    2,是否是纯文本
    是
    源:Reader
    目的:Writer
    3,明确具体设备
    源:
        硬盘:File
    目的:
        硬盘:File
    FileReader fr=new FileReader("a.txt");
    FileWriter fw=new FileReader("b.txt");
    4,需要额外功能吗
    需要
        BufferedReader bufr=new BufferedReader(new FileReader("a.txt"));
        BufferedWriter bufw=new BufferedWriter(new FIleWriter("b.txt"));
============================================================================
需求2:读取键盘录入信息,并写入到一个文件中
    1,明确源和目的
    源:InputStream Reader
    目的:OutputStream Writer
    2,是否是纯文本吗
        是,
            源:Reader
            目的:Writer
    3,目的设备
        源:键盘:System.in
        目的:硬盘:File
        InputStream in=System.in;
        FileWriter fw=new FileWriter("b.txt");
        这样做可以完成,但是麻烦,将读取的字节数据转成字符串,再有字符流操作
    4,需要额外功能吗
        需要: 转换 将字节流转成字符流。因为明确的源是Reader,这样操作吻别数据做便捷
        所以要将已有的字节流转成字符流。使用字节--->字符 InputStreamReader    
        InputStreamReader inr=new InputStreamReader(System.in);
        FileWriter fw=new FileWriter("b.txt");
        还需要高效吗
        需要:
        BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufw=new BufferedWriter(new FileWriter("b.txt"));
需求3:讲一个文本文件显示在控制台上
    1,明确源和目的
    源:InputStream Reader
    目的:OutputStream Writer
    2,是否是纯文本吗
    是,
        源:Reader
        目的:Writer
    3,明确具体设备:
    源: 硬盘:File
    目的:控制台:Sytem.out
    FileReader fr=new FileReader("a.txt");
    OutputStream out=System.out;
    4,需要额外功能吗
    需要转换:fr=new FileReader("a.txt");
    OutputStream osw=new OutputStreamWriter(System.out);
    需要高效
    BufferedReader bufer=new BufferedReader(new FileReader("a.txt"));
    BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));
        
需求4:读取键盘录入数据,显示在控制台上
    1,明确源和目的
    源:InputStream Reader
    目的:OutputStream Writer
    2,是否是纯文本吗
    是,
        源:Reader
        目的:Writer
    3明确设备
        源;键盘:System.in
        目的:控制台:System.out
    InputStream in=System.in;
    OutputStream out=System.out;
    4,明确额为功能
        需要转换,因为都是字节流,但是操作的却是文本数据
        所以使用字符流操作更为便捷
        InputStreamReader in=new InputStreamReader(System.in);
        OutputStreamWriter osw=new OutputStreamWriter(System.out);
        为了将起高效
        BufferedReader bufr=new BufferedReader(InputStreamReader(System.in));
        BufferedWriter bufw=new BufferedWriter(OutputStreamWriter(System.out));
原文地址:https://www.cnblogs.com/kedoudejingshen/p/2726971.html