日期:2014-05-20  浏览次数:20827 次

■■■关于FileInputStream read函数的问题
以下代码测试通过

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()