/*
* 需求:复制一个mp3媒体文件。
*/
package demo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyMp3Test {
public static void main(String[] args) throws IOException {
copy_4();
}
public static void copy_4() throws IOException {//读一个字节,写一个字节,速度太慢,所以这种方式千万别用
FileInputStream fis = new FileInputStream("0.mp3");
FileOutputStream fos = new FileOutputStream("4.mp3");
int ch = 0;
while((ch = fis.read())!=-1){
fos.write(ch);
}
fis.close();
fos.close();
}
public static void copy_3() throws IOException {//该方法虽然简单,但是有局限性,如果文件过大,会造成内存崩溃
FileInputStream fis = new FileInputStream("0.mp3");
FileOutputStream fos = new FileOutputStream("3.mp3");
byte[] buf = new byte[fis.available()];
fis.read(buf);
fos.write(buf);
fis.close();
fos.close();
}
public static void copy_2() throws IOException {//利用缓冲区进行复制
FileInputStream fis = new FileInputStream("0.mp3");
BufferedInputStream bufis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("2.mp3");
BufferedOutputStream bufos = new BufferedOutputStream(fos);
int ch = 0;
while((ch = bufis.read())!=-1){
bufos.write(ch);
//bufos.flush();//用到缓冲区,切记刷新
}
bufis.close();
bufos.close();
}
public static void copy_1() throws IOException {
FileInputStream fis = new FileInputStream("0.mp3");
FileOutputStream fos = new FileOutputStream("1.mp3");
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=-1){//如果这里不指定buf,那么会有危险,因为会一直不断往1.mp3里面写入源中的第一个元素
fos.write(buf,0,len);
}
fis.close();
fos.close();
}
}
21-IO流-22-IO流(字节流-练习-复制MP3)
最新推荐文章于 2023-02-07 23:14:08 发布