黑马程序员技术交流社区

标题: 自定义流,实现给源文件加上行号和冒号 [打印本页]

作者: 老衲玩IT    时间: 2013-8-27 08:42
标题: 自定义流,实现给源文件加上行号和冒号
package com.itheima;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

/**
*  自定义字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,
* 让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,
* 能够在读取的每行前面都加上有行号和冒号。
* @author Administrator
*
*/
public class Test {
        public static void main(String[] args) {
                try {
                        MyStream myStream=new MyStream("src\\com\\itheima\\Test.java");
                        myStream.print();
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

}
class MyStream {
        BufferedReader reader;
        //该类对象开销比String小
        StringBuilder sb;
        public MyStream(BufferedReader reader) {
                this.reader=reader;
                pack();
        }
        //通过文件路径构造
        public MyStream(String path) throws Exception{
                this(new BufferedReader(new FileReader(path)));
        }
        //通过文件对象构造
        public MyStream(File file) throws Exception{
                this(new BufferedReader(new FileReader(file)));
        }
        //对读入的每一行进行加工
        private void pack() {
                try {
                        sb=new StringBuilder();
                        String line=null;
                        int linenum=0;
                        while ((line=reader.readLine())!=null) {
                                sb.append(++linenum+":"+line+"\n");
                        }
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
        //打印加工后的字符串
        public void print() {
                System.out.println(sb.toString());
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2