IO流(流的操作基本规律)

本文详细阐述了流操作的核心规律,通过明确源和目的、数据类型、设备以及额外功能需求,帮助开发者快速定位并选择合适的流对象进行数据处理。通过四个步骤的分析,结合具体案例,展示了如何高效地实现文本复制、键盘输入数据保存、文本文件显示于控制台及键盘输入信息即时显示等常见任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流的操作规律:
之所以要弄清楚这个规律,是因为流对象太多,开发时不知道用哪个对象合适

想要知道开发时用到哪些对象。只要通过四个明确即可

 1.明确源和目的(汇)
    源:InputStream            Reader
    目的:OutputStream     Writer


2.明确数据是否是纯文本数据。
        源:是纯文本:Reader
            否:InputStream
        目的:是纯文本:Writer
                否:OutputStream

到这里,就可以明确需求中具体要使用哪个体系

3.明确具体的设备。
    源设备:
                硬盘:File
                键盘:System.in
                内存:数组
                网络:Socket流

    目的设备:
            硬盘:File
            控制台:System.out
            内存:数组
            网路:Socket流


  4.是否需他其他额外功能
        1,是否需要高效(缓冲区)
        是。就加上buffer
class Demo{
    public static void main(String[] args){


    /*
 *  需求1:复制一个文本文件
 *              1:明确源和目的
 *                      源:InputStream Reader
 *                      目的:OutputStream Writer
 *      
 *              2:是否是纯文本
 *                  是
 *                  源:Reader
 *                  目的:Writer
 * 
 *              3:明确具体设备。
 *              源:
 *                  硬盘:File
 *              目的:
 *                  硬盘:File
 *      
 *          FileReader fr=new FileReader("a.txt");
 *          FileWriter fw=new FileWriter("b.txt");
 *                  
 * 
 *      4:需要额外功能吗?
 *          需要高效
 *  BufferReader  bufr=new BufferReader(new FileReader("a.txt"));
 *  BufferWriter bufw=new BufferWriter(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 isr=new InputStreamReader(System.in);
 *  FileWriter fw=new FileWriter("b.txt");
 * 
 *  
 *  还需要功能吗?
 *      需要:想高效
 *  BufferReader  bufr=new BufferReader(new InputStreamReader(System.in));
 *  BufferWriter bufw=new BufferWriter(new FileWriter("b.txt"));
 * 
 * 
 * */

    }
}
class Demo{
    public static void main(String[] args){

/*需求3:讲一个文本文件显示在控制台上。
 *              1:明确源和目的
 *                      源:InputStream Reader
 *                      目的:OutputStream Writer
 *      
 *              2:是否是纯文本
 *                  是
 *                  源:Reader
 *                  目的:Writer
 *              
 * 
 *              3:明确具体设备
 *                  源:
 *                      硬盘:File
 *                  目的:
 *                      控制台:System.out
 *      
 *              FileReader fe=new FileReader("a.txt");
 *              OutputStream out=System.out;//PrintStream
 *              
 *          4:需要额外功能吗?
 *              需要:转换。
 *              FileReader fr=new FileReader("a.txt");
 *              OutputStreamWriter osw=new OutputStreamWriter(System.out);
 *      
 * 
 *          需要高效/
 *          BufferReader bufr=new BufferReader(new FileReader("a.txt"));
 *          BufferWriter bufw=new BufferWriter(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 isr =new InputStreamReader(System.in);
 *              OutputStreamWriter osw=new OutputStreamWriter(System.out);
 * 
 *      为了将其高效。
 *      BufferReader bufr=new BufferedReader(new InputStreamReader(System.in));
 *      BufferWriter bufw=new BufferWriter(new OutputStreamWriter(System.out));
 * 
 *                  
 * 
 * */

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值