• IO流-ReadLine方法的原理 自定义BufferedReader


    package com.yyq;
    /*
     * readLine 方法的原理
     * 无论是读一行,获取读取多个字符其实最终都是在硬盘上一个一个的读取,所以最终使用的都是
     * read方法一次读一个的发法
     * 缓冲区:带数组的内存 readline 底层用的是read方法
     *readline 使用一个数组把数据临时存储起来了,档遇到换行时把数据返回出来
     */
    /*
     * 明白了BufferedReader 类中特有的方法readline
     * 可以自定义一个类包含功能myreadline 来模拟bufferedreader、
     * 自己定义一个自己的myBufferedReader
     */
    import java.io.*;
    class MyBufferedReader{
        // 可以一次读取一行的方法
        FileReader fr = null;
        MyBufferedReader(FileReader fr){
            this.fr = fr;
        }
        public String myReadLine() throws IOException{
            //定义一个临时容器,源bufferedReader 封装的是字符数组
            //为了演示方便,定义StringBuilder 容器,最终将数据变成字符串
            StringBuilder sb = new StringBuilder();
            int ch = 0;
            while((ch=fr.read())!=-1){
                if(ch=='
    '){
                    continue;
                }
                if(ch == '
    '){
                    return sb.toString();
                }
                sb.append((char)ch);
            }
            // 保证只有有数据就可以读出来,该部分最多执行一次
            if(sb.length()!=0){
                return sb.toString();
            }
            return null;
        }
        public void myclose(){
            try{
                fr.close();
            }
            catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    public class ReadLineDemo {
    
        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
            MyBufferedReader mybufr = new MyBufferedReader(new FileReader("1.txt"));
            String line = null;
            while((line = mybufr.myReadLine())!=null){
                System.out.println(line);
            }
        }
    
    }
    package com.yyq;
    /*
     * readLine 方法的原理
     * 无论是读一行,获取读取多个字符其实最终都是在硬盘上一个一个的读取,所以最终使用的都是
     * read方法一次读一个的发法
     * 缓冲区:带数组的内存 readline 底层用的是read方法
     *readline 使用一个数组把数据临时存储起来了,档遇到换行时把数据返回出来
     */
    /*
     * 明白了BufferedReader 类中特有的方法readline
     * 可以自定义一个类包含功能myreadline 来模拟bufferedreader、
     * 自己定义一个自己的myBufferedReader
     */
    import java.io.*;
    class MyBufferedReader{
        // 可以一次读取一行的方法
        FileReader fr = null;
        MyBufferedReader(FileReader fr){
            this.fr = fr;
        }
        public String myReadLine() throws IOException{
            //定义一个临时容器,源bufferedReader 封装的是字符数组
            //为了演示方便,定义StringBuilder 容器,最终将数据变成字符串
            StringBuilder sb = new StringBuilder();
            int ch = 0;
            while((ch=fr.read())!=-1){
                if(ch=='
    '){
                    continue;
                }
                if(ch == '
    '){
                    return sb.toString();
                }
                sb.append((char)ch);
            }
            // 保证只有有数据就可以读出来,该部分最多执行一次
            if(sb.length()!=0){
                return sb.toString();
            }
            return null;
        }
        public void myclose(){
            try{
                fr.close();
            }
            catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    public class ReadLineDemo {
    
        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
            MyBufferedReader mybufr = new MyBufferedReader(new FileReader("1.txt"));
            String line = null;
            while((line = mybufr.myReadLine())!=null){
                System.out.println(line);
            }
        }
    
    }

    package com.yyq;
    /*
     * readLine 方法的原理
     * 无论是读一行,获取读取多个字符其实最终都是在硬盘上一个一个的读取,所以最终使用的都是
     * read方法一次读一个的发法
     * 缓冲区:带数组的内存 readline 底层用的是read方法
     *readline 使用一个数组把数据临时存储起来了,档遇到换行时把数据返回出来
     */
    /*
     * 明白了BufferedReader 类中特有的方法readline
     * 可以自定义一个类包含功能myreadline 来模拟bufferedreader、
     * 自己定义一个自己的myBufferedReader
     */
    import java.io.*;
    class MyBufferedReader{
        // 可以一次读取一行的方法
        FileReader fr = null;
        MyBufferedReader(FileReader fr){
            this.fr = fr;
        }
        public String myReadLine() throws IOException{
            //定义一个临时容器,源bufferedReader 封装的是字符数组
            //为了演示方便,定义StringBuilder 容器,最终将数据变成字符串
            StringBuilder sb = new StringBuilder();
            int ch = 0;
            while((ch=fr.read())!=-1){
                if(ch==' '){
                    continue;
                }
                if(ch == ' '){
                    return sb.toString();
                }
                sb.append((char)ch);
            }
            // 保证只有有数据就可以读出来,该部分最多执行一次
            if(sb.length()!=0){
                return sb.toString();
            }
            return null;
        }
        public void myclose(){
            try{
                fr.close();
            }
            catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    public class ReadLineDemo {

        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
            MyBufferedReader mybufr = new MyBufferedReader(new FileReader("1.txt"));
            String line = null;
            while((line = mybufr.myReadLine())!=null){
                System.out.println(line);
            }
        }

    }

  • 相关阅读:
    六种简单易理解的排序算法
    leetcode-數組篇
    leetcode-字符串篇
    java8 Optional优雅非空判断
    md2all 简单实用
    zooleeper面试题
    深入理解 JVM锁 与 分布式锁
    redission 高性能分布式锁
    Java传统 定时任务
    关于Zookeeper
  • 原文地址:https://www.cnblogs.com/yangyongqian/p/5153080.html
Copyright © 2020-2023  润新知