黑马程序员技术交流社区

标题: 字节流复制MP3的四种方法 [打印本页]

作者: 小穿钉    时间: 2015-11-3 17:44
标题: 字节流复制MP3的四种方法
package cn.com.bytestream;
/**
* 运用字节流方法复制MP3文件的四种方法,比较效率。
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyMp3Test {

        public static void main(String[] args) throws IOException {
                //copy_1();自定义数组缓冲区
                //copy_2();应用已有的BufferedInputStream和BufferedOutputStreams
                //copy_3();不建议使用available()方法
                copy_4();//单字节复制,千万别用,会慢的要命

        }

        public static void copy_4() throws IOException {
//                创建一个字节输入流对象,并与源文件相关联
                FileInputStream fis=new FileInputStream("c:\\金海心-悲伤的秋千.mp3");

                //                创建一个字节输出流对象,并明确目的地
                FileOutputStream fos=new FileOutputStream("c:\\非常好听的歌曲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("c:\\金海心-悲伤的秋千.mp3");

                //                创建一个字节输出流对象,并明确目的地
                FileOutputStream fos=new FileOutputStream("c:\\非常好听的歌曲3.mp3");
                byte[] buf=new byte[fis.available()];
                fos.write(buf);
                fis.close();
                fos.close();
        }


        public static void copy_2() throws IOException {
                //                创建一个字节输入流对象,并与源文件相关联
                FileInputStream fis=new FileInputStream("c:\\金海心-悲伤的秋千.mp3");
                //                创建一个字节输入流缓冲区对象,并与被缓冲的流相关联
                BufferedInputStream bufis=new BufferedInputStream(fis);
                //                创建一个字节输出流对象,并明确目的地
                FileOutputStream fos=new FileOutputStream("c:\\非常好听的歌曲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("c:\\金海心-悲伤的秋千.mp3");
                FileOutputStream fos=new FileOutputStream("c:\\非常好听的歌曲.mp3");
                byte[] buf=new byte[1024];
                int len=0;
                while((len=fis.read(buf))!=-1){
                        fos.write(buf,0,len);
                }
                fos.close();
                fis.close();
        }
}
累死宝宝了,不过IO流的学习有进展,给自己赞一个


作者: 大自然的搬运工    时间: 2015-11-3 18:02
不错/。。加油
作者: Mr___dangerous    时间: 2015-11-3 18:57
加油,学习了
作者: 孤单背影    时间: 2015-11-3 21:21
多层文件夹的来一套就可以了
作者: zzwzz    时间: 2015-11-3 22:01
嗯。。。。不错
作者: _let'sgo    时间: 2015-11-3 22:03
总结的很好,今天刚在学习IO




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2