A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高双武 黑马帝   /  2011-11-11 20:47  /  1918 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚才用读写字符流写了一个程序,把e盘的MP3复制到d盘,复制过去了但是不能播放,这是怎么回事?代码如下
package execisetest;
import java.io.*;
public class FileCopy {
        public static void main(String[] args)
        {               
                copyfile();
        }
        public static void copyfile()
        {
                FileWriter fw=null;
                FileReader fr=null;
                try{
                fw=new FileWriter("d:\\dd.mp3");
                fr=new FileReader("e:\\dd.mp3");
                char [] buf=new char[1024];
                int num=0;
                while((num=fr.read(buf))!=-1)
                {
                        System.out.println(1);
                        fw.write(new String(buf,0,num));
                }
                }catch(IOException e){
                        System.out.println(e.toString());
                }
                finally {
                try{               
                fr.close();
                fw.close();
                }
        catch(IOException e){
                System.out.println(e.toString());
        }
}
}
}

3 个回复

倒序浏览
字符流不可以读写MP3格式的文件,用字节流才行。IO流后面会学到字节流。字符流主要处理文本文件,按最小单位是字符,这样读取其他文件时候会造成文件破坏。
回复 使用道具 举报
你的代码我试验了 ,确实格式损坏。因为MP3的编码格式不是char 类型的,如果你复制记事本文件会好用的!
回复 使用道具 举报
希望有用:

import java.io.*;
public class FileCopy {
        public static void main(String[] args)
        {               
                copyfile();
        }
        public static void copyfile()
        {
               BufferedOutputStream bufo =null;
               BufferedInputStream bufi  =null;
                try{
                bufo= new BufferedOutputStream(new FileOutputStream("d:\\dd.mp3"));
                bufi= new BufferedInputStream(new FileInputStream("e:\\dd.mp3"));
               // char [] buf=new char[1024];
                int num=0;
                while((num=bufi.read())!=-1)
                {
                        //System.out.println(1);
                        bufo.write(num);
                }
                }catch(IOException e){
                        System.out.println(e.toString());
                }
                finally {
                try{               
                bufo.close();
                bufi.close();
                }
        catch(IOException e){
                System.out.println(e.toString());
        }
}
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马