黑马程序员学习笔记——关于readLine()的那些事
来源:互联网 发布:网络专业有哪些课程 编辑:程序博客网 时间:2024/05/15 08:14
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
readLine()--java.io.BufferedReader中用于读取一行的方法
实现原理:一般是在readLine()方法内部建立一个数字,然后使用reader节点流(比如FileReader类)的read()方法读取一个字符,然后判断是否是行结束符,如果不是就存到数组中,接着读下一个;如果是行结束符,就将数组的内容以字符串形式返回。
下面,根据这个原理,来自我模拟一个readLine()方法:
package Day19_io;import java.io.FileReader;import java.io.IOException;
//建立自己的BufferedReaderpublic class MyBufferedReader {FileReader r = null;
//在创建对象时将要处理的Reader传递进来public MyBufferedReader(FileReader r) {this.r = r;}//定义自己的readLine()方法//抛出运行中可能会发生的异常,谁调用谁处理public String myReadLine() throws IOException {int num = 0;int i = 0;char[] cbuf = new char[4096];while ((i=r.read()) != -1) {//注意'\r'代表的是一个字符if (i == '\r')continue;if (i == '\n') {//将数据转化为StringString str = new String(cbuf, 0, num);return str;}cbuf[num] = (char)i; num ++;}//如果在文档结束符所在的行中还有其他字符时,就需要把数组中的内容读出来if (num != 0) {String str = new String(cbuf, 0, num);return str;} else {//如果只读取了一个结束符,那就直接返回空return null;}}//定义自己的关闭方法//抛出运行中可能会发生的异常,谁调用谁处理public void myClose() throws IOException {r.close();}}使用上面定义的类
package Day19_io;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class MyBR_Apply {public static void main(String[] args) {String str;FileReader fr = null;MyBufferedReader mbr = null;FileWriter fw = null;BufferedWriter bw = null;try {fr = new FileReader("C:\\Documents and Settings\\Administrator\\桌面\\bbb.txt");mbr = new MyBufferedReader(fr);fw = new FileWriter("C:\\Documents and Settings\\Administrator\\桌面\\bbb1.txt");bw = new BufferedWriter(fw);//调用自己的readLine()while ((str=mbr.myReadLine()) != null) {bw.write(str);//不要忘了新建一行,因为readLine()方法返回的字符串不包含任何行终止符bw.newLine();bw.flush();}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {//处理自己的close()if (mbr != null) {try {mbr.myClose();} catch (IOException e) {e.printStackTrace();}}if (bw != null) {try {bw.close();} catch (IOException e) {e.printStackTrace();}}}}}
Note:这个自定义readLine()的过程中其实采用装饰设计模式:
即在一个自定义类中,引用一个需要被装饰的类,在原有类的功能的基础上,提供加强功能。那么这个自定义类就是装饰类。
由于装饰类的作用一般是增强已有对象,所以装饰类和被装饰类通常都属于一个体系。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
0 0
- 黑马程序员学习笔记——关于readLine()的那些事
- 黑马程序员 —— BufferedReader的readLine()方法
- 【黑马程序员】关于HTML的学习笔记
- 黑马程序员学习笔记——关于BufferedInputStream
- 黑马程序员——异常里的那些事
- 黑马程序员——增强型readLine()加行号
- 黑马程序员——关于集合类的总结笔记
- 黑马程序员——关于方法的总结笔记
- 黑马程序员—关于Java中的内部类的笔记
- 黑马程序员——关于类的学习
- 黑马程序员学习笔记——泛型的反射
- 黑马程序员学习笔记——排列组合的递归
- 黑马程序员——异常的学习笔记和总结
- 黑马程序员学习笔记 关于继承
- 黑马程序员—c# Graphics类的学习笔记
- 关于程序员的那些事。。。
- 黑马程序员——HTML学习笔记
- 黑马程序员——多线程学习笔记
- Json使用
- Android* 4.3 (Jelly Bean) x86 模拟器系统映像
- EXCEL 2010添加趋势线
- javaScript系列:js中获取时间new Date()详细介绍
- 获得android keystore的SHA1值
- 黑马程序员学习笔记——关于readLine()的那些事
- 计算机科学概论(第11版) 1.2节 问题与练习答案
- The lookback interface
- VB 学习地图
- 13个最狂帅炫酷的前沿科技研究项目
- Eclipse 常用技巧功能
- 用户心理与游戏运营
- Android酱油笔记之Gridview第一个item点击效果问题
- PB9.0动态生成控件