zoukankan      html  css  js  c++  java
  • 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);
            }
        }

    }

  • 相关阅读:
    swagger本地环境搭建
    上传图片报错
    接口自动化测试---环境搭建
    IDEA 运行程序提交hdfs时,报错
    hadoop2.60集群搭建
    查找排除当前最大、最小salary之后的员工的平均工资avg_salary。
    按照salary的累计和running_total,其中running_total为前两个员工的salary累计和
    CSS补充
    BFC(块级格式化上下文)
    CSS精灵技术
  • 原文地址:https://www.cnblogs.com/yangyongqian/p/5153080.html
Copyright © 2011-2022 走看看