黑马程序员技术交流社区
标题:
关于装饰类的一些问题
[打印本页]
作者:
trhthyj
时间:
2014-4-7 21:41
标题:
关于装饰类的一些问题
ch不是int行的吗?怎么会ch=='\r'呢?
QQ截图20140407174531.png
(189.3 KB, 下载次数: 20)
下载附件
2014-4-7 21:41 上传
作者:
学习代码
时间:
2014-4-7 21:50
import java.io.*;
class Demo1
{
private FileReader fr;
Demo1(FileReader fr)
{
this.fr = fr;
}
public String show()throws IOException
{ StringBuilder sb = new StringBuilder();
int len = 0;
while((len= fr.read())!=-1)
{
if(len=='\r')//字符在马表里面对应的都是,数字。
continue;
if(len=='\n')
return sb.toString();
else
sb.append((char)len);
}
if((sb.length())!=0)
return sb.toString();
return null;
}
public void myClose()throws IOException
{
fr.close();
}
public void setLine(int len)
{
this.len= len;
}
public int getLen()
{
return len;
}
}
class Demo
{
public static void main(String[] args)throws IOException
{
FileReader fr = new FileReader("Demo.java");
Demo1 d= new Demo1(fr);
String leng= null;
while((leng=d.show())!=null)
{
System.out.println(leng);
}
d.myClose();
}
}
复制代码
作者:
xuehuayous
时间:
2014-4-7 21:51
返回的就是int类型啊,API这么写的;
read
public int read()
throws IOException读取单个字符。在字符可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。
用于支持高效的单字符输入的子类应重写此方法。
返回:
作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误
作者:
宋丹
时间:
2014-4-7 22:11
import java.io.*;
class MyBufferedInputStream {
//定义一个要被修饰的类
private InputStream in;
//定义一个字节型的数组
private byte[] buf=new byte[1024];
//定义两个变量,一个做指针,一个做计数器
private int pos=0,count=0;
//构造函数,向构造函数里面添加被修饰的类
public MyBufferedInputStream(InputStream in){
this.in=in;
}
//自定义一个read方法
public int myRead()throws IOException{
//计数器大于0时,
if (count>0) {
byte b=buf[pos];
count--;
pos++;
return b&15;
}else if (count==0) {//计数器为零时,说明数组中的元素被取完了,需要重新获取
count=in.read(buf);
//数组获取不到元素,说明已经读取完毕
if (count<0) {
return -1;
}
//将指针置为数组的0角标
pos=0;
byte b=buf[pos];
count--;
pos++;
return b&15;
}
return -1;
}
public void myClose()throws IOException{
in.close();
}
}
复制代码
read方法都到最后为了防止第一次读到的就是-1,会把读到的字节&15提升到int类型,所以返回来的是int型数据
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2