IO流_自定义类模拟BufferedReader的readLine()功能案例
来源:互联网 发布:java 获取当前时间 编辑:程序博客网 时间:2024/04/29 11:35
package cn.itcast_08;import java.io.IOException;import java.io.Reader;/* * 用Reader模拟BufferedReader()的readLine()功能 * * readLine():一次读取一行,根据换行符判断是否结束,只返回内容,不返回换行符 */public class MyBufferedReader {private Reader r;public MyBufferedReader(Reader r) {this.r = r;}/* * 思考:写一个方法,返回值是一个字符串。 */public String readLine() throws IOException {/* * 我要返回一个字符串,我该怎么办呢? * 我们必须去看看r对象能读取什么东西呢? * 两个读取方法,一次读取一个字符或者一次读取一个字符数组 * 那么,我们要返回一个字符串,用那个方法比较好呢? * 我们很容易想到字符数组比较好,但是问题来了,就是这个数组的长度是多长呢? * 根本就没有办法定义数组的长度,你定义多长都不合适。 * 所以,只能选择一次读取一个字符。 * 但是呢,这种方式的时候,我们再读取下一个字符的时候,上一个字符就丢失了。 * 所以,我们又应该定义一个临时存储空间把读取过的字符给存储起来。 * 这个用谁比较合适呢?数组、集合、字符串缓冲区三个可供选择。 * 经过简单的分析,最终选择使用字符串缓冲区对象。并且使用的是StringBuilder */StringBuilder sb = new StringBuilder();// 做这个读取最麻烦的是判断结束,但是在结束之前应该是一直读取,直到-1/* * hello * world * java * * 104101108108111 * 119111114108100 * 1069711897 */int ch = 0;while ((ch = r.read()) != -1) {//104,101,108,108,111// if (ch == '\r') {// continue;// }if(ch == '\n'){return sb.toString();//hello}else{ sb.append((char)ch);//hello}//为了防止数据丢失,判断sb的长度不能大于0if(sb.length() > 0){return sb.toString();}}return null;}/* * 先写一个关闭方法 */public void close() throws IOException {this.r.close();}}
package cn.itcast_08;import java.io.FileReader;import java.io.IOException;/* * 测试MyBufferedReader的时候,把它当作BufferedReader一样的使用 */public class MyBufferedReaderDemo {public static void main(String[] args) throws IOException {MyBufferedReader mbr = new MyBufferedReader(new FileReader("my.txt"));String line = null;while ((line = mbr.readLine()) != null) {System.out.print(line);}mbr.close();// System.out.println('\r' + 0);// 13// System.out.println('\n' + 0);// 10}}
0 0
- IO流_自定义类模拟BufferedReader的readLine()功能案例
- 自定义一个类包含一个功能和readLine一致的方法来模拟BufferedReader
- readLine原理及自定义一个类中包含一个和readLine一致的方法功能来模拟BufferedReader
- IO流_自定义类模拟LineNumberReader的获取行号功能案例
- 用Reader模拟BufferedReader的readLine()功能
- 黑马程序员——Java基础——IO流(模拟BufferedReader类中的readLine()方法)
- Java的IO流中BufferedReader中readLine()方法的原理
- IO流 System.in BufferedReader的readLine()方法 toUpperCase()方法 equalsIgnoreCase("exit")
- 【java编程】IO类之复写BufferedReader里的readLine方法(带行号)
- Java IO学习【7】BufferedReader的学习-readLine原理
- IO流_字符缓冲输入流BufferedReader的使用
- IO流——模拟定义BufferedReader
- java 模拟BufferedReader中的readLine方法
- 21-IO流-14-IO流(字符流-缓冲区-BufferedReader-readLine方法原理)
- JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine
- IO流-2.【字符流缓冲区BufferedWriter/BufferedReader】【readLine()方法】【装饰设计模式】【LineNumberReader】
- BufferedReader的readLine方法阻塞的处理
- 黑马程序员——模拟缓冲区,模拟BufferedReader类自定义
- STM32F103程序设计-5-控制引脚高低电平的实现
- 抽象工厂
- jQuery笔记之过滤选择器
- express 下的handlebars应用
- Ubuntu安装MongoDB
- IO流_自定义类模拟BufferedReader的readLine()功能案例
- UVa 1339
- 使用Filter过滤器实现权限访问
- 尽快处理完一切
- 中山大学计算机组成原理多周期CPU实验
- 【tensorflow1.0学习笔记003】构造神经网络与结果可视化代码
- 【Leetcode】342. Power of Four
- Android中获取短信的内容
- Android 一款十分简洁、优雅的日记APP