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);
            }
        }

    }

  • 相关阅读:
    stm32入门
    Shell入门
    广播与组播
    超时接收
    socket的四种IO模型
    网络套接字socket
    网络基础
    慢速系统调用被中断
    C# 程序运行时间计算
    HTTP的传输编码(Transfer-Encoding:chunked) / net::ERR_INVALID_CHUNKED_ENCODING
  • 原文地址:https://www.cnblogs.com/yangyongqian/p/5153080.html
Copyright © 2011-2022 走看看