FileReader中的read()方法,可以建立一个字符数组作为缓冲区,为什么说BufferedReader的readLine()方法比read()方法高效?
解决方案 »
- 用JPEGImageEncoder保存图片时,大图片报java.lang.OutOfMemoryError
- eclipse问题求解用。调用方法的时候,老是卡机
- 请教大家哪里能下到java数据结构和算法(电力出版社)书中的源代码啊?
- JDBC中怎样隐藏数据库的名字
- 一道关于类变量初始化的scjp题,不明白结果为什么是3,而且还可以定义两个同名的变量
- 帮我看一眼这个程序中HASHMAP起到什么作用了?
- JOptionPane问题??
- 加急!!寻找swing高手
- java程序能否访问文件系统的ntfs权限设定?
- java小白求助 关于内部类的问题 快绕晕了
- 刚写了一个类,大家帮我看看有没有什么“bad smell”
- java内部类的编译和运行
因为read每读取一个字符就要访问一次磁盘,这对磁盘的杀伤力是挺大的,而readLine访问一次就读了一行,速度上肯定快,而且对磁盘的访问减少了
{
private InputStream in;
//定义一个计数器记录字符的个数,定义一个数组指针,每读取一个字符,指针移动+1
private int count = 0,pos = 0;
private byte[] buf = new byte[1024*8];
MyBufferedInputStream(InputStream in)
{
this.in = in;
}
public int myRead() throws IOException
{
if(count==0)
{
count = in.read(buf);
if(count<0)
return -1;
pos = 0;
byte b = buf[pos];
count--;
pos++;
return b&255;
}
else if(count>0)
{
byte b = buf[pos];
count--;
pos++;
return b&255;
}
return -1;
}
public void myColse() throws IOException
{
in.close();
}
}
其实还是调用的read()方法,一个一个读取访问
我能请教你下不?
1、你定义的private byte[] buf = new byte[1024*8];这一句我有点不明白,不就是new byte[8184]么?
2、如果文本里是“汉字”,你的这个read()就不适用了?我碰到了个问题,就是从文本里读取汉字,然后放入string[length]里面,很纠结 ...