Java高级Day33-节点流处理流

93.节点流处理流

节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter

处理流(也叫包装流)是“连接”在已存在的流(节点流或处理流)之上,为程序提供更为强大的读写功能,如BufferedReader、BufferedWriter

区别和联系:

  1. 节点流是底层流/低级流,直接跟数据源相接

  2. 处理流包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出

  3. 处理流对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连

处理流的功能主要体现在以下两个方面:

  1. 性能的提高:主要以增加缓冲的方式来提高输入输出的效率

  2. 操作的便捷:处理流可能提供了一系列便捷的方法来一次输入输出大批量的数据,使用更加灵活方便

95.BufferedReadr

其属于字符流,是按照字符读取的,关闭时,只需要关闭外层流即可

//使用BufferedReader读取文本文件,并显示在控制台
public class BufferedReader_ {
    public static void main(String[] args) throws Exception{
        String filePath = "d:\\a.java";
        //创建BufferedReader对象
        BufferedReader bufferedRread = new BufferedReader(new FileReader(filePath));
        //读取
        String line;//按行读取,效率高
        //当返回null时,表示文件读取完毕
        while(line = bufferedReader.readLine() != null){
            System.out.println(line);
        }
        //关闭流,这里注意,只需要关闭BufferedReader,因为底层会自动关闭节点流
        bufferedReader.close();
    }
}

96.BufferedWriter

//用BufferedWriter将“Hello,World”写入到文件中
public class BufferedWriter_ {
    public static void main(String[] args) throws Exception{
        String filePath = "d:\\ok.txt";
        //创建BufferedWriter对象
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath));
        bufferedWriter.write("HelloWorld")
        //插入一个换行
        bufferedWrite.newLine();    
        //关闭外层流即可,传入的FileWriter(filePath)会在底层关闭
        bufferedWriter.close();
    }
}

综合使用BufferedReader和BufferedWriter完成文本文件拷贝

public class BufferedCopy_ {
    public static void main(String[] args){
        
        //BufferedReader和BufferedWriter是按照字符操作
        //不要去操作二进制文件,可能造成文件损坏
        String srcFilePath = "d:\\a.java";
        String desFilePath = "d:\\a2.java";
        BufferedReader br = null;
        BufferedWriter bw = null;
        String line;
        
        try{
            br = new BufferedReader(new FileReader(srcFilePath))
            bw = new BufferedWriter(new FileWriter(desFilePath))
            
                //readLine读取一行内容,但没有换行
            while((line = br.readLine() != null){
                //每读取一行,就写入
                bw.write(line);
                //插入换行
                bw.newLine();
            }
             
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭流
            try{
                if(br != null){
                   br.close();
                }
                if(bw != null){
                   bw.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } 
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值