以下代码测试通过
import java.io.*;
public class aa
{
public static void main(String args[]) throws IOException
{
FileInputStream fp=new FileInputStream( "cls.bat ");
byte b[]=new byte[1000];
int n=0;
while((fp.read(b,n,1)!=-1)&&n <1000) //注意此处的b是不加下标的,WHY???
{
System.out.print((char)b[n]);
n++;
}
}
}
我有问题的是这一句:
fp.read(b,n,1)!=-1 //每调用一次read函数就读入一个字节给b, 为什么不是用b[n]?而是直接用b?
------解决方案--------------------
read
public int read(byte[] b,
int off,
int len)
throws IOException从此输入流中将最多 len 个字节的数据读入一个字节数组中。在某些输入可用之前,此方法将阻塞。
覆盖:
类 InputStream 中的 read
参数:
b - 存储读取数据的缓冲区。
off - 数据的起始偏移量。
len - 读取的最大字节数。
返回:
读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
InputStream.read()