每次看到类似下面的代码我就有些疑问:try{
InputStream is=new FileInputStream(new File("src/Test.java");
OutputStream os=new FileOutputStream(new File("c:/"+is.getName());
byte b[]=new byte[1024];
int length=0;
try{
while((length=is.read(b))!=-1)
os.write(b,0,length);
}catch(IOException e){
}
}catch(FileNotFoundException e){
}
....我的问题是,我查了API,对public void write(byte[] b,int off,int len)的解释是:
将指定字节数组中从偏移量 off 开始的 len 个字节写入此输出流。
这样的话,while循环里我第一次写入第1个字节,第二次写入第1,2个字节,第三次写入第1,2,3个字节 每次写入都把以前写过的重新覆盖了一次(比如第1个字节,每次写入都会重新覆盖),是这样吗?这效率太低了吧?
InputStream is=new FileInputStream(new File("src/Test.java");
OutputStream os=new FileOutputStream(new File("c:/"+is.getName());
byte b[]=new byte[1024];
int length=0;
try{
while((length=is.read(b))!=-1)
os.write(b,0,length);
}catch(IOException e){
}
}catch(FileNotFoundException e){
}
....我的问题是,我查了API,对public void write(byte[] b,int off,int len)的解释是:
将指定字节数组中从偏移量 off 开始的 len 个字节写入此输出流。
这样的话,while循环里我第一次写入第1个字节,第二次写入第1,2个字节,第三次写入第1,2,3个字节 每次写入都把以前写过的重新覆盖了一次(比如第1个字节,每次写入都会重新覆盖),是这样吗?这效率太低了吧?
throws IOException
从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。 覆盖:
类 InputStream 中的 read
参数:
b - 存储读取数据的缓冲区。
返回:
读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
这句每次循环都要执行一遍 b的内容当然是不断更新的啊