zoukankan      html  css  js  c++  java
  • 107.Java中IO流_字符流的缓冲区

    字符流的缓冲区

    查看Reader 发现Reader,操作的是字符,我们就不需要进行编码解码操作,由字符流读到二进制,自动进行解码得到字符,写入字符自动编码成二进制.

    Reader有一个子类BufferedReader。子类继承父类显然子类可以重写父类的方法,也可以增加自己的新方法。例如一次读一行就是常用的操作.那么BufferedReader 类就提供了这个方法,可以查看readLine()方法具备 一次读取一个文本行的功能。很显然,该子类可以对功能进行增强。

    体验BufferedReader

    public class IoTest_BufferedReader {
        public static void main(String[] args) throws IOException {
            readFile("c:\a.txt");
        }
    
        private static void readFile(String path) throws IOException {
            Reader read = new FileReader(path);
    
            BufferedReader br = new BufferedReader(read);
            
            String line = null;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
    
        }
    }

    注意:

    在使用缓冲区对象时,要明确,缓冲的存在是为了增强流的功能而存在,所以在建立缓冲区对象时,要先有流对象存在.

    缓冲区的出现提高了对流的操作效率。原理:其实就是将数组进行封装。

    使用字符流缓冲区拷贝文本文件.

    public class Demo7 {
        public static void main(String[] args) throws IOException {
            // 关联源文件
            File srcFile = new File("c:\linux大纲.txt");
            // 关联目标文件
            File destFile = new File("d:\linux大纲.txt");
            // 实现拷贝
            copyFile(srcFile, destFile);
    
        }
    
        private static void copyFile(File srcFile, File destFile)
                throws IOException {
            // 创建字符输入流
            FileReader fr = new FileReader(srcFile);
            // 创建字符输出流
            FileWriter fw = new FileWriter(destFile);
    
            // 字符输入流的缓冲流
            BufferedReader br = new BufferedReader(fr);
            // 字符输出流的缓冲流
            BufferedWriter bw = new BufferedWriter(fw);
    
            String line = null;
            // 一次读取一行
            while ((line = br.readLine()) != null) {
                // 一次写出一行.
                bw.write(line);
                // 刷新缓冲
                bw.flush();
                // 进行换行,由于readLine方法默认没有换行.需要手动换行
                bw.newLine();
            }
            // 关闭流
            br.close();
            bw.close();
        }
    }
    author@nohert
  • 相关阅读:
    svg使用
    人生是 立体, 不是平面, 股票大作手不太好的结局
    react 管理平台
    首页性能优化
    vue 安装插件
    python中如何对list之间求交集,并集和差集
    Java中String直接复制和new String创建对象的区别以及equals和==的区别和效率对比
    关于二叉树的总结
    Postgresql 数据库,如何进行数据备份以及导入到另外的数据库
    Java List详解,面试中应该如何解答关于List的问题
  • 原文地址:https://www.cnblogs.com/gzgBlog/p/13624617.html
Copyright © 2011-2022 走看看