黑马程序员技术交流社区
标题:
关于自定义BufferedInputStream出现的问题。
[打印本页]
作者:
zhouxp3323
时间:
2012-3-27 23:46
标题:
关于自定义BufferedInputStream出现的问题。
class MyBufferedInputStream {
private InputStream in;
private byte[] buf = new byte[1024*4];
int pos = 0,count = 0;
MyBufferedInputStream(InputStream in){
this.in = in;
}
public int myRead(){
if(count==0){
try {
count = in.read(buf);
} catch (IOException e) {
e.printStackTrace();
}
if(count<0){
return -1;
}
pos = 0;
byte b = buf[pos];
count--;
pos++;
return b&255;
}else if(count>0){
pos = 0;
byte b = buf[pos];
count--;
pos++;
return b&0xff;
}
return -1;
}
}
我用这个自定义的BufferedInputStream去复制文件的时候,文件老是没有复制全,这个程序有什么问题吗?求高手解决
作者:
张明星
时间:
2012-3-28 00:30
把最后一个语句中的 pos=0;去掉
作者:
yangshang1
时间:
2012-3-28 07:12
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class MyBufferedInputStream {
private InputStream in;
private byte[] buf = new byte[1024*4];
int pos = 0,count = 0;
MyBufferedInputStream(InputStream in){
this.in = in;
}
public int myRead(){
if(count==0)
{
try {
count = in.read(buf);
} catch (IOException e) {
e.printStackTrace();
}
}
byte b = buf[pos];
pos++;
if(b==0)
return -1;
else
return b&255;
}
public static void main(String[] args) throws Exception {
// int a=0;
// FileInputStream fis=new FileInputStream("in.txt");
// a=fis.read();
// while(-1!=a)
// {
// System.out.println(a);
// a=fis.read();
// }
int a=0;
MyBufferedInputStream mbis=new MyBufferedInputStream(new FileInputStream("in.txt"));
while(-1!=(a=mbis.myRead()))
{
System.out.println((char)a);
}
}
}
int.txt的内容是asdasdasdasd
作者:
yangshang1
时间:
2012-3-28 07:13
count = in.read(buf);
这个是一次就读到数组里了
作者:
抓哇
时间:
2012-3-28 08:58
都是根据count做判断 如果为0则进行读取的操作 如果大于0才放到数组 小于0则结束
也就是而读取的时候才有POSE从0到1023读取即count = in.read(buf);POSE=0 都需要的
而大于0的时候只是仅仅吧要准备读取的字节放到数组中 按正常逻辑应该是第2步跟第一步换下为位置好好理解些
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2