黑马程序员技术交流社区

标题: 复制文件问题 [打印本页]

作者: 孙飞    时间: 2012-7-11 12:41
标题: 复制文件问题
本帖最后由 feigecal 于 2012-7-11 14:00 编辑
  1. /**
  2. 需求:将一个图片文件中的数据存储到另一个文件中,复制文件。
  3. 分析:源,使用InputStream Reader
  4. 不是纯文本文件所以用InputStream
  5. 设备是硬盘上的一个文件,可以用字符流的方法进行优化,用到InputStreamReader BufferedReader
  6. BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("")));
  7. 分析目的:使用OutputStream Writer
  8. 不是纯文本文件,所以用OutputStream
  9. 设备是硬盘上的一个文件,可以用字符流的方法进行优化,用到OutputStreamWriter BufferedWriter
  10. BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("")));
  11. */
  12. import java.io.*;
  13. class CopyFileDemo
  14. {
  15.             public static void main(String[] args)
  16.            {
  17.                    BufferedReader br=null;
  18.                    BufferedWriter bw=null;
  19.                    try
  20.                   {
  21.                             br=new BufferedReader(new InputStreamReader(new FileInputStream("e:\\0.mp3")));
  22.                             bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("e:\\3.mp3")));
  23.                             String line=null;
  24.                             while ((line=br.readLine())!=null)
  25.                           {
  26.                                      bw.write(line);
  27.                                      bw.newLine();
  28.                                      bw.flush();
  29.                           }
  30.                   }
  31.                  catch (IOException e)
  32.                 {
  33.                           throw new RuntimeException();
  34.                 }
  35.                 finally
  36.                {
  37.                           try
  38.                          {
  39.                                   if (br!=null)
  40.                                 {
  41.                                         br.close();
  42.                                  }
  43.                          }
  44.                          catch (IOException e)
  45.                         {
  46.                                   throw new RuntimeException();
  47.                         }
  48.                         try
  49.                        {
  50.                                if (bw!=null)
  51.                               {
  52.                                       bw.close();
  53.                                }
  54.                         }
  55.                        catch (IOException e)
  56.                       {
  57.                                throw new RuntimeException();
  58.                        }
  59.             }

  60.        }
  61. }
复制代码
为什么拷贝后的文件比原文件小了一些。那里出了错,详解一下

作者: 周恺    时间: 2012-7-11 13:03

作者: 孙飞    时间: 2012-7-11 13:14
周恺 发表于 2012-7-11 13:03
  • 楼主,MP3是二进制文件,不能使用字符串作为缓冲区.也不能使用BufferedReader和BufferedWrite
    如果你将它 ...

  • 那BufferedReader和Bufferedwriter什么情况下可以用来优化字节流呢?
    作者: 周恺    时间: 2012-7-11 13:16
    feigecal 发表于 2012-7-11 13:14
    那BufferedReader和Bufferedwriter什么情况下可以用来优化字节流呢?

    当你要传输的数据必须以字符作为最终显示方式的时候.
    作者: 孙飞    时间: 2012-7-11 13:25
    是不是除了键盘输入的情况,其它只要源不是纯文本文件,都不能优化?
    作者: 孙新强    时间: 2012-7-11 13:38
    mp3格式是不能转换为字符流的
    下面我修改了一下,希望对你有帮助:
    import java.io.*;
    class CopyFileDemo1
    {
                public static void main(String[] args)
               {
                           BufferedInputStream bi=null;
                       BufferedOutputStream bo=null;
                      
                       try
                      {
                               bi=new  BufferedInputStream(new FileInputStream("E:\\0.mp3\\浮沉主题曲.mp3"));
                           bo=new BufferedOutputStream(new FileOutputStream("E:\\3.mp3"));
                           
                           byte by[]=new byte [bi.available()];     

                           bi.read(by);

                           bo.write(by);
                      }
                     catch (IOException e)
                    {
                              throw new RuntimeException();
                    }
                    finally
                   {
                              try
                             {
                                      if (bi!=null)
                                    {
                                            bi.close();
                                     }
                             }
                             catch (IOException e)
                            {
                                      throw new RuntimeException();
                            }
                            try
                           {
                                   if (bo!=null)
                                  {
                                          bo.close();
                                   }
                            }
                           catch (IOException e)
                          {
                                   throw new RuntimeException();
                           }
                }

           }
    }
    作者: 孙飞    时间: 2012-7-11 14:00
    孙新强 发表于 2012-7-11 13:38
    mp3格式是不能转换为字符流的
    下面我修改了一下,希望对你有帮助:
    import java.io.*;

    慢慢理清了,谢了




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