本帖最后由 李文思 于 2015-8-1 22:14 编辑
- package com.itheima;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.Reader;
- /**
- * Test6--自定义字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,
- * 让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
- * */
- public class Test6 {
- public static void main(String[] args) {
- //创建自定义的字符输入流包装类。
- try {
- PackWriter pw = new PackWriter(new FileReader("d:\\Test1.java"));
- String line = null;
- while((line = pw.readLine()) != null) {
- System.out.println(line);
- }
- pw.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- //自定义字符输入流的包装类。
- class PackWriter {
- //因为包装的是字符输入流,所以构造的时候要接收一个字符输入流进来。
- private Reader reader;
- PackWriter(Reader reader) {
- this.reader = reader;
- }
- //定义一个行的计数
- private int count;
- //提供一次读一行的方法:
- public String readLine() {
- try {
- //创建一个容器,用于存储读取到的字符
- StringBuilder sb = new StringBuilder();
-
- //定义一个标记,指示文件是否已到达结尾。
- boolean flag = true;
- int info = 0;
- //开始读取数据,读到行的结尾处为止。
- while((info = reader.read()) != -1) {
- flag = false;
- String str = (char)info + "";
- //判断是否到达行结尾
- if (str.equals("\r"))
- continue;
- if(str.equals("\n"))
- break;
- sb.append(str);
- }
-
- //如果没有读到任何的数据,则返回null
- if (flag)
- return null;
复制代码 |
|