开发人员常常会随手写一些类来读入一个简单的配置文件,或者用BufferedReader一行一行地读入特定格式的数据。这些随手写成的解析器往 往会提供基本的出错报告,但有时候它们会很难记录下出错的行号。幸运的是,Java的java.io.LineNumberReader类提供了行号的记 录而不需做任何额外的工作。 
java.io.LineNumberReader类是java.io.BufferedReader类的扩展,它封装了处理行号的额外能力。假设我们有一个简单的解析器,它的规则是:每一行都必须以“#”开头。我们来示范一下LineNumberReader的用法:

public void parseFile(Reader reader) throws IOException {
LineNumberReader in = new LineNumberReader(reader);
String line = "";
while( (line = in.readLine( )) != null ) {
if(line.startsWith("#")) {
// 处理这一行
...
} else {
throw new IOException("第" + in.getLineNumber( ) + "行丢了#号");
}
}
in.flush( );
in.close( );
}

行号0的意味着我们还没开始读入。如果在一个程序中我们每次读入一行,并输出该行和它的行号,行号将从1开始。

LineNumberReader中有一个setLineNumber(int)方法,但它仅仅是个装饰物。例如把行号设成42并不会转到第42行;它只是简单地把当前行的行号设成42。下一行的行号就是43了。

LineNumberReader类的更多相关文章

  1. LineNumberReader类的使用

    package com.lk.C; import java.io.IOException; import java.io.LineNumberReader; import java.io.PrintW ...

  2. java I/O系统 LineNumberReader类

    LineNumbeReader类可以很方便的读取文件的行号 package ch13; import java.io.*; import io.BufferedInputFile; public cl ...

  3. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  4. Day21_IO第三天

    1.IO体系总图 2.字符流体系图 记忆路线:输入输出流前面加File和Buffered,这就记住6个了,还剩两个转换流名字比较特殊,需要着重记一下(转换流:字节和字符的组合,所以起名字叫InputS ...

  5. 黑马程序员——【Java基础】——Java IO流

    ---------- android培训.java培训.期待与您交流! ---------- 一.IO概述 1.IO:是Input.Output的缩写. 2.特点: (1)用于处理设备间的数据传输. ...

  6. Java API —— IO流小结

    练习题: 1.复制文本文件 package cn.itcast_01; import java.io.BufferedReader; import java.io.BufferedWriter; im ...

  7. 黑马程序员_java基础笔记(07)...IO流

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— IO(InputStream,outputStream)字节流 (Reader,Wr ...

  8. 系统学习 Java IO (十五)----字符读写 Reader/Writer 其他子类

    目录:系统学习 Java IO---- 目录,概览 跟踪行号的缓冲字符输入流 LineNumberReader LineNumberReader 类是一个 BufferedReader ,用于跟踪读取 ...

  9. JDK_API剖析之java.io包

    Java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入. 一.接口 1.Closea ...

随机推荐

  1. .NET Web开发总结(三)

    第五章 ASP.NET 页面语法 本章详细讲解.NET页面的语法结构     一般情况下  一个ASP.NET页面要包括页面编译指令 HTML页面框架及Web窗体     服务器端控件  服务器端代码 ...

  2. Permission Lists Assigned to a User

    SQL that I find useful in many occasions. It will return a list of permissions that are assigned to ...

  3. FileUpload无法赋值解决方案

    FileUpload无法赋值解决方案 编写人:CC阿爸 2015-1-27 今天在这里,我想与大家一起分享如何处理fileupload控件不能赋值的问题.有兴趣的同学,可以一同探讨与学习一下,否则就略 ...

  4. Silverlight 读取配置文件

    1.ExtranetLink.xml <?xml version="1.0" encoding="utf-8" ?> <menus> & ...

  5. Silverlight - GPU加速

    1. 在Silverlight plug-in上设置 <param name="enableGPUAcceleration" value="true" / ...

  6. Eruda——手机网页前端调试面板

    前言 进行移动端网页开发时,想要查看手机浏览器信息从来都不是一件容易的事.特别是当目标环境为APP内置WebView,需要调用特定的JsBridge接口时,你根本都干不了什么,只能一遍又一遍地修改代码 ...

  7. MongoDB工具介绍

    在Windows下面,mongodb就只有一个bin目录以及bin目录以外的三个文件,相对bin目录中包括了如下文件: bsondump.exe 用于将导出的BSON文件格式转换为JSON格式 mon ...

  8. 学习c编程的第三天

    #include<stdio.h> int add(int,int); int main(){ int x=add(1,2); printf("%d",x); retu ...

  9. mysql存储引擎(mysql学习六)

    存储引擎 现在只有InnoDB支持外键 上接着学习笔记五 class表中有外键,所以不能修改存储引擎 表类型   默认的服务器表类型,通过my.ini可以配置    Default-storage-e ...

  10. ASP.NET中前台调用后台的方法

    学习文章:http://www.cnblogs.com/kingteach/archive/2010/11/12/1875633.html 练习代码: 前台: <html xmlns=" ...