黑马程序员技术交流社区

标题: 输入输出流的问题 [打印本页]

作者: 高双武    时间: 2011-11-11 20:47
标题: 输入输出流的问题
刚才用读写字符流写了一个程序,把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());
        }
}
}
}

作者: 宋文轩    时间: 2011-11-11 20:54
字符流不可以读写MP3格式的文件,用字节流才行。IO流后面会学到字节流。字符流主要处理文本文件,按最小单位是字符,这样读取其他文件时候会造成文件破坏。
作者: 刘福双    时间: 2011-11-11 21:06
你的代码我试验了 ,确实格式损坏。因为MP3的编码格式不是char 类型的,如果你复制记事本文件会好用的!
作者: 李龙龙    时间: 2011-11-12 00:21
希望有用:

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());
        }
}
}
}





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