JAVA——LineNumberReader

本文通过自定义实现LineNumberReader类,详细解析了其工作原理,并提供了具体的代码示例。通过设置初始行号并读取文件内容,展示了如何使用LineNumberReader进行文件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.*;
class LineNumberReaderDemo
{
    public static void main(String[] args)throws IOException
    {
        FileReader fr = new FileReader("FileWriterDemo.java");
        LineNumberReader lnr = new LineNumberReader(fr);
        String line = null;
        lnr.setLineNumber(10);
        while((line=lnr.readLine())!=null)
        {
            System.out.println(lnr.getLineNumber()+":"+line);
        }
        lnr.close();
    }
}

这里写图片描述
因为上面设置了行号为10;所以从11开始。

就LineNumberReader原理,用代码实现它的运行机理。

import java.io.*;
class MyLineNumberReader 
{
    private Reader r;
    private int linNumber;
    MyLineNumberReader(Reader r)
    {
        this.r = r;
    }
    public String myReadLine() throws IOException
    {
        linNumber++;
        StringBuilder sb = new StringBuilder();
        int ch = 0;
        while((ch=r.read())!=-1)
        {
            if(ch=='\r')
                continue;
            if(ch=='\n')
                return sb.toString();
            else
                sb.append((char)ch);
        }
        if(sb.length()!=0)
            return sb.toString();
        return null;
    }
    public void setLineNumber(int lineNumber)
    {
        this.linNumber = lineNumber;
    }
    public int getLineNumber()
    {
        return linNumber;
    }
    public void myClose()throws IOException
    {
        r.close();
    }
}

class MyLineNumberDemo
{
    public static void main(String[] args)throws IOException
    {
        FileReader fr = new FileReader("DateDeme.java");
        MyLineNumberReader mylnr  = new MyLineNumberReader(fr);
        mylnr.setLineNumber(10);
        String line = null;
        while((line=mylnr.myReadLine())!=null)
        {
            System.out.println(mylnr.getLineNumber()+"::"+line);
        }
        mylnr.myClose();
    }
}

运行结果如下:

11::import java.util.*;
12::import java.text.*;
13::class DateDeme
14::{
15::    public static void main(String[] args)
16::    {
17::        Date d = new Date();
18::        //这样打印格式看不懂。
19::    //  System.out.println(d);
20::        //将模式封装到simpleDateformat对象中
21::        SimpleDateFormat sdf  = new SimpleDateFormat("yyy年MM月dd日E hh:mm:ss");
22::        //调用format方法让模式格式化指定Date对象
23::        String time = sdf.format(d);
24::        System.out.println("time ="+time); //time =2016年05月21日星期六 10:58:08
25::        
26::        
27::        
28::        System.out.println("----------");
29::        long l = System.currentTimeMillis();
30::        Date d1 = new Date(l);
31::        System.out.println("d1:"+d1); //d1:Sat May 21 10:58:08 CST 2016
32::        
33::    }
34::}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值