以下代码测试通过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?
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?
解决方案 »
- 请求高手:我想问一下这个语句public static void main(String a[]) 中的String a[]是什么意思
- java编写的网页叫JSP, vb编写的网页叫ASP??
- java线程 如何监控用户操作超时
- java中为什么非静态内部类里面不能有静态成员
- jdbc的问题
- 求教 “Static的問題”!!!
- 求 java核心技术1(基础知识)
- 在eclipse加了中文语言包后的帮助里,说要一个jdt示例文件,在哪里找呀?
- 有个笨问题,小弟想学java不知各位用什么编译器?VJ?
- 难难难!Graphics2D搞死我了
- Prohibited package name: java.awt 怎么解决
- java中对未捕获异常是否可以设置一个全局的处理函数
public int read(byte[] b,
int off,
int len)
throws IOException从此输入流中将最多 len 个字节的数据读入一个字节数组中。在某些输入可用之前,此方法将阻塞。 覆盖:
类 InputStream 中的 read
参数:
b - 存储读取数据的缓冲区。
off - 数据的起始偏移量。
len - 读取的最大字节数。
返回:
读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
InputStream.read()
我知道怎么用,只是想知为什么?
I know "How",but I don't know "WHY"while((fp.read(b,n,1)!=-1)&&n<1000) {}上面的循环每一个字节就读一次,理论说每读一次只是读取一个字符按顺序放到b中,不是应该用 b[n]才表示一个字符的吗?? 为什么用b,而不用b[n]?
InputStream里如果提供你说的方法了,你完全可以使用。
2、其实按字节读取效率并不低,当我们只是为了复制而不读取其中内容的时候,按字节比按字符要好很多。