模拟一个带行号的缓冲区对象
来源:互联网 发布:数据强弱关系流程图 编辑:程序博客网 时间:2024/05/21 08:57
/*模拟一个带行号的缓冲区对象(myLineNumberReader):注:LineNumberReader是BufferedReaderd的子类都是装饰类。
* 实现功能:读一行,将行号连内容都打印,并行号可设置
* 思路:1.建立自己的装饰类(是Reader体系的装饰类),使用装饰类的写法:构造函数将被装饰类对象传入。在被装饰类已有的功能上扩展功能
* 2.类比LineNumberReader,这里要在Reader基础上扩展的特有方法是ReadLine()、getLineNumber()、setLineNumber(int num )、close()四个方法
* */
package demo;
import java.io.*;
class Demo{
public static void main(String [] args)throws IOException
{
FileReader fr=new FileReader("abc.txt");
myLineNumberReader lnr=new myLineNumberReader(fr);
lnr.mySetLineNumber(100);
String line=null;
while((line=lnr.myReadLine())!=null){
System.out.println(lnr.myGetLineNumber()+":"+line);
}
lnr.myclose();
}
}
class myLineNumberReader
{
private Reader r;
private int num;
myLineNumberReader(Reader r){
this.r=r;
}
public String myReadLine(){
StringBuilder sb=new StringBuilder();
int ch=0;
try {
while((ch=r.read())!=-1){
if(ch=='\r'){
continue;
}
if(ch=='\n'){
num++;
return sb.toString();
}else{
sb.append((char)ch);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(sb.length()!=0){//最后一行没有\r\n,也就没有判断到\n,但是数据存入了sb,所以要另加判断。
num++;
return sb.toString();
}
return null;
}
public int myGetLineNumber(){
return this.num;
}
public void mySetLineNumber(int num ){
this.num=num;
}
public void myclose(){
try {
r.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
* 实现功能:读一行,将行号连内容都打印,并行号可设置
* 思路:1.建立自己的装饰类(是Reader体系的装饰类),使用装饰类的写法:构造函数将被装饰类对象传入。在被装饰类已有的功能上扩展功能
* 2.类比LineNumberReader,这里要在Reader基础上扩展的特有方法是ReadLine()、getLineNumber()、setLineNumber(int num )、close()四个方法
* */
package demo;
import java.io.*;
class Demo{
public static void main(String [] args)throws IOException
{
FileReader fr=new FileReader("abc.txt");
myLineNumberReader lnr=new myLineNumberReader(fr);
lnr.mySetLineNumber(100);
String line=null;
while((line=lnr.myReadLine())!=null){
System.out.println(lnr.myGetLineNumber()+":"+line);
}
lnr.myclose();
}
}
class myLineNumberReader
{
private Reader r;
private int num;
myLineNumberReader(Reader r){
this.r=r;
}
public String myReadLine(){
StringBuilder sb=new StringBuilder();
int ch=0;
try {
while((ch=r.read())!=-1){
if(ch=='\r'){
continue;
}
if(ch=='\n'){
num++;
return sb.toString();
}else{
sb.append((char)ch);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(sb.length()!=0){//最后一行没有\r\n,也就没有判断到\n,但是数据存入了sb,所以要另加判断。
num++;
return sb.toString();
}
return null;
}
public int myGetLineNumber(){
return this.num;
}
public void mySetLineNumber(int num ){
this.num=num;
}
public void myclose(){
try {
r.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
简写:
package demo;
import java.io.*;
class Demo{
public static void main(String [] args)throws IOException
{
FileReader fr=new FileReader("abc.txt");
myLineNumberReader lnr=new myLineNumberReader(fr);
String line=null;
while((line=lnr.myReadLine())!=null){
System.out.println(lnr.myGetLineNumber()+":"+line);
}
lnr.close();
}
}
class myLineNumberReader extends BufferedReader
{
private Reader r;
private int num;
myLineNumberReader(Reader r){
super(r);
}
public String myReadLine() throws IOException{
num++;
return super.readLine();
}
public int myGetLineNumber(){
return this.num;
}
public void mySetLineNumber(int num ){
this.num=num;
}
}
0 0
- 模拟一个带行号的缓冲区对象
- 模拟一个带行号的缓冲区对象。
- 黑马程序员---自定义一个带行号的缓冲区对象
- 缓冲区 readLine 模拟缓冲区 LineNumberReader 模拟行号装饰
- 带行号的RichTextBox
- 带行号的EditView
- 不带行号的测试
- 带缓冲区的输出流
- javaOOp 带缓冲区 的读取
- 模拟log4j获取日志对象调用所在的类名、方法名及行号
- 模拟log4j获取日志对象调用所在的类名、方法名及行号
- 模拟log4j获取日志对象调用所在的类名、方法名及行号
- 把一个file对象的内容带上行号复制到另一个file对象(java)
- 带行号的RichTextBox(C#)
- 带行号的RichTextBox(C#)
- 带行号显示的 RichEdit 改造
- c#写带行号的richTextBox
- 分享一个模拟提交带文件的表单的方法
- oracle学习笔记:;连接查询(内连接的等值连接和非等值连接,外链接的左外、右外及全外链接)
- 同时可以修改时间和日期的datetime_select and 有关时间的转换
- SVN_Versions1.3.2_自破解
- RecyclerView高度随Item自适应
- JavaScript基础学习之-JavaScript权威指南--第一章解释器
- 模拟一个带行号的缓冲区对象
- poj 1182 食物链(带权并查集)
- [Android基础]Android中使用HttpURLConnection
- Android px、dp、sp之间相互转换
- Python之Window环境搭建
- Burpsuite截获https数据包
- HDOJ-2006-求奇数的乘积
- 网站和短信设备相结合如何办到
- Eclipse中Debug 总显示source not found