流的简单实用

try(
            FileInputStream fis = new FileInputStream("./IO流.java");//输入流 , 把指定文件中的数据,读取(输入)到当前文件中
            FileOutputStream fos = new FileOutputStream("./新建文本文档.txt");//输出流 , 把指定的数据,输出到指定的文件中去
                ){
            byte[] bytes = new byte[1024];//动态声明一个byte数组,且1024个字节
            int tmp;//为什么用int声明?因为read(bytes);返回值是bytes这个数组中,添加元素的个数(字节数),如果达到了指定的个数(这里是1024),tmp就会为0,数组也会清空,然后依次循环,且 当读取到最后一位的时候,返回值为-1
            while((tmp = fis.read(bytes)) != -1){//这是判断语句,当输入流指定的文件中,读取到最后一位的时候,就会返回-1,然后这个tmp != -1 判断语句  就为false 就不在循环了
                fos.write(bytes,0,tmp);//将bytes数组,从下标为0开始,输出tmp个,(tmp就代表是数组里面已添加的字节个数)
            }
            fos.flush();//磕两下,往输出流指定的文件中添加东西,都要磕两下
        }catch(Exception e){//捕捉异常
            e.printStackTrace();//对异常进行打印追踪栈帧
        }
        try(
            FileReader fr = new FileReader("./IO流.java");//字符输入流 指定文件
            FileWriter fw = new FileWriter("./新建文本文档.txt");//字符输出流 指定文件
                ){           
                char[] chars = new char[512];//这里是char类型的数组,因为纯字符流复制,就是纯文本,一个汉字就是一个字符,就是两个字节,就是16位,所以这里用的是char字符型数组
                int tmp = 0;//和上面一样,这里为什么要用int声明?
                while(-1 != (tmp = fr.read(chars))){//遍历循环 将输出流指定的文件中的内容,先复制到char数组,
                    fw.write(chars,0,tmp);//把数组的内容,复制到输出流指定的文件中,并清空数组
                }
                fw.flush();//磕两下 输出流的方法
        }catch(Exception e){//捕捉异常
            e.printStackTrace();
        }
    BufferedReader : //字符输入缓冲流
        readLine :
            方法 : readLine();//一次读取一行
                //返回值 : 返回该行内容的字符串,不包含任何行终止符,如果已到达流末尾(最后的,没有东西了),则返回 null
                
    BufferedWriter : //字符输出缓冲流
        newLine :
            方法 : newLine();//新建一行,相当于换行符,
    

     try(
            BufferedReader br = new BufferedReader(new FileReader("./IO流.java"));//字符输入流的缓冲流
            BufferedWriter bw = new BufferedWriter(new FileWriter("./新建文本文档.txt"));//字符输出流的缓冲流
                ){
                    String tmp = null;//为什么用String?因为里面都是字符串,读取一行,是以字符串的形式 ,所以要用String
                    int count = 0;//这里现在是判断作用,用于添加换行符(下面)
                    while(true){//while循环,如果不,判断语句是true 如果不终止,就是死循环把
                        count++;
                        tmp = br.readLine();//读取字符输入流指定文件的一行,并赋值给tmp
                        if (tmp == null) {//判断,如果tmp==null  就执行一下语句 当readLine()方法,读取到文件尾端的时候,读取完成,就返回null,所以,当读取完成后就要终止循环
                            break;//终止循环
                        }
                        //另起一行开始写,就是一个符号,在两行之间,显示的是换行
                        if (count > 1) {//这是判断,除了第一行,别的我们都需要换行,这里就是判断,如果大于1 那就是第二行,和以下行了,就需要换行
                            bw.newLine();//换行符,是在行首
                        }
                        bw.write(tmp);//添加(复制)到输出流指定的文件中,(一次是一行),然后数组清空
                    }
                    bw.flush();//添加(复制)完,就要磕两下
        }catch(Exception e){//捕捉异常
            e.printStackTrace();//处理异常(打印追踪栈帧)
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值