字节数组拷贝之available()方法
- A:案例演示
-
int|read(byte[] b):一次读取一个字节数组。
-
int|available():返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。
通俗一点来说:可以获取到读取文件所有的字节个数。 -
write(byte[] b):一次写出一个字节数组。
-
弊端:有可能会内存溢出
FileInputStream fis = new FileInputStream("致青春.mp3"); FileOutputStream fos = new FileOutputStream("copy.mp3"); byte[] arr = new byte[fis.available()]; //根据文件大小做一个字节数组 fis.read(arr); //将文件上的所有字节读取到数组中 fos.write(arr); //将数组中的所有字节一次写到了文件上 fis.close(); fos.close();
-
package com.heima.stream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo06_Copy {
/**
* @param 第二种拷贝
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//第二种拷贝,不推荐使用,因为有可能会导致内存溢出
FileInputStream fis = new FileInputStream("致青春.mp3"); //创建输入流对象,关联致青春.mp3
FileOutputStream fos = new FileOutputStream("copy.mp3"); //创建输出流对象,关联copy.mp3
//int len = fis.available();
//System.out.println(len);
byte[] arr = new byte[fis.available()]; //创建与文件一样大小的字节数组
fis.read(arr); //将文件上的字节读取到内存中
fos.write(arr); //将字节数组中的字节数据写到文件上
fis.close();
fos.close();
}
}