【字节流】 复制各类格式文件,available()用方法

字节流复制文件,available()用方法

1.FileInputStream中available()是用来求该文件大小的(多少字节).

2.但不建议使用,因为如果缓存文件过大,会导致内存溢出,崩溃。

3.尽量使用占用小一点的容器来保证内存的正常运行。

第一种用数组来缓存字节

package com.video.home;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo3 {
	public static void main(String[] args) throws IOException {
		//1.先读取文件
		FileInputStream fs = new FileInputStream("music.mp3");
		//2.再存入新创建文件中
		FileOutputStream ft = new FileOutputStream("music2.mp3");
		byte[] b = new byte[fs.available()];	//创建一个与文件一样大小的数组来缓存数据
		while(fs.read(b) != -1) {
			ft.write(b);
			ft.flush();
		}
		//关闭资源
		ft.close();
		ft.close();
	}


第二种用自带缓存容器来存字节

package com.video.home;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo3 {
	public static void main(String[] args) throws IOException {
		//1.先读取文件并存入缓冲区中
		FileInputStream fs = new FileInputStream("music.mp3");
		BufferedInputStream bs = new BufferedInputStream(fs);
		//2.再创建一个新文件,和缓冲区,再从缓冲区中直接写入文件中
		FileOutputStream ft = new FileOutputStream("music2.mp3");
		BufferedOutputStream bo = new BufferedOutputStream(ft);
		//每次取1024个字节存入新文件中
		int b;
		while((b=bs.read()) != -1) {
			bo.write(b);
		}
		//关闭资源
		bo.close();
		bs.close();
	}
}


你可能感兴趣的:(【字节流】 复制各类格式文件,available()用方法)