zoukankan      html  css  js  c++  java
  • 黑马程序员JAVA高级视频_IO输入与输出19天6(LineNumberReader与自定义LineNumberReader)

    package string.test;
    
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.LineNumberReader;
    import java.io.Reader;
    
    /*
     * LineNumberReader 
     *     跟踪行号的缓冲字符输入流。此类定义了方法 setLineNumber(int) 和 getLineNumber(),它们可分别用于设置和获取当前行号。
     */
    public class LineNumberReaderDemo {
        public static void main(String[] args) throws IOException {
            FileWriter fw = new FileWriter("demo.txt");
            BufferedWriter bw = new BufferedWriter(fw);
            for (int i = 0; i < 100; i++) {
                bw.write("zhangsanailisi" + i);
                bw.newLine();
                bw.flush();
            }
            FileReader fr = new FileReader("demo.txt");
            //java提供的
            /*
             * LineNumberReader lbr = new LineNumberReader(fr); String line = null;
             * while ((line = lbr.readLine()) != null) {
             * 
             * System.out.println(lbr.getLineNumber() + "." + line); } bw.close();
             * lbr.close();
             */
            //自定义的MyLineNumberDemo
            MyLineNumberDemo mln = new MyLineNumberDemo(fr);
            String line = null;
            mln.setLineNumber(800);
            while ((line = mln.myReadLine()) != null) {
                System.out.println(mln.getLineNumber()+"." + line);
            }
            bw.close();
            mln.myClose();
        }
    }
    /*
     * 自定义的LineNumberReader
     * 
     */
    class MyLineNumberDemo {
        private Reader r;
        private int lineNumber = 0;
    
        public MyLineNumberDemo(Reader r) {
            this.r = r;
        }
    
        public String myReadLine() throws IOException {
            lineNumber++;
            StringBuilder sb = new StringBuilder();
            int i = 0;
            while ((i = r.read()) != -1) {
                if (i == '\r')
                    continue;
                if (i == '\n')
                    return sb.toString();
                sb.append((char) i);
            }
            if (sb.length() != 0) {
                return sb.toString();
            }
            return null;
        }
    
        public void setLineNumber(int lineNumber) {
            this.lineNumber = lineNumber;
        }
    
        public int getLineNumber() {
            return lineNumber;
        }
    
        public void myClose() throws IOException {
            r.close();
        }
    }
  • 相关阅读:
    【转】完全用Linux工作(王垠)
    PPPoE拨号设置
    sping mvc 结合 hibernate 实现用户登录功能(一)!
    MyEclipse + Maven开发Web工程的详细配置过程
    sping mvc 结合 hibernate 实现用户登录功能(三)!
    编程式事务
    struts2 结合extjs实现的一个登录实例
    tomcat使用总结
    使用Spring 2.5 和 Hibernate 3.2 开发MVC Web程序(基于annotation特性)
    如果你在买东西时
  • 原文地址:https://www.cnblogs.com/guwenren/p/2974861.html
Copyright © 2011-2022 走看看