用IO流复制文件有两种方法:
第一种如下:
FileInputStream fis = new FileInputStream("21.jpg"); //创建输入流对象
FileOutputStream fos = new FileOutputStream("copy.jpg"); //创建输出流对象
int b;
while((b = fis.read()) != -1){ //在不断的读取每一个字节
fos.write(b); //将每个字节写出
}
fis.close(); //关流释放资源
fos.close();
}
第二种如下:
FileInputStream fis = new FileInputStream("周杰伦 - 红尘客栈 - 正式版.mp3"); //创建输入流对象
FileOutputStream fos = new FileOutputStream("周杰伦 - 红尘客栈 - 复制版.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();
推荐使用第一种,因为第二种会有内存溢出的情况,但是我想问如果对第二中每次在读取时进行一个判断,如果所读取的内容大于内存容量就转为第二种,如果读取的容量没有大于内存容量就用第一种,这样不是更好吗?还是说这样还是有浪费内存的情况?
|
|