黑马程序员技术交流社区

标题: 通过字节流对象复制一个MP3文件,复制下的文件总是少了几k [打印本页]

作者: 帅帅loyal    时间: 2015-4-17 21:23
标题: 通过字节流对象复制一个MP3文件,复制下的文件总是少了几k
C:\Users\帅帅\Desktop
  1. //用缓冲区对象完成一个对Mp3文件的拷贝
  2. import java.io.*;
  3. public class CopyMp3 {
  4.         public static void main(String[] args)
  5.         {
  6.                 copy_1();
  7.         }
  8.         public static void copy_1()
  9.         {
  10.                 FileOutputStream fos = null;
  11.                 FileInputStream fis = null;
  12.                 try
  13.                 {
  14.                         fos = new FileOutputStream("2.mp3");
  15.                         fis = new FileInputStream("1.mp3");
  16.                         BufferedOutputStream bufos = new BufferedOutputStream(fos);
  17.                         BufferedInputStream bufis = new BufferedInputStream(fis);
  18.                         int by = 0;
  19.                         while ((by =bufis.read())!=-1)
  20.                         {
  21.                                 bufos.write(by);
  22.                         }
  23.                 }
  24.                 catch (IOException e )
  25.                 {
  26.                         throw new RuntimeException("读写异常");
  27.                 }
  28.                 finally
  29.                 {
  30.                         if (fos!=null)
  31.                         {
  32.                                 try
  33.                                 {
  34.                                         fos.close();
  35.                                 }
  36.                                 catch (IOException e )
  37.                                 {
  38.                                         throw new RuntimeException("写入流关闭异常");
  39.                                 }
  40.                         }
  41.                         if (fis!=null)
  42.                         {
  43.                                 try
  44.                                 {
  45.                                         fis.close();
  46.                                 }
  47.                                 catch (IOException e )
  48.                                 {
  49.                                         throw new RuntimeException("读取流关闭异常");
  50.                                 }
  51.                         }
  52.                 }
  53.         }
  54. }
复制代码

作者: 帅帅loyal    时间: 2015-4-17 21:27
换了几个MP3文件都是同样的问题,复制下的问件都是少几k不等,
作者: 帅帅loyal    时间: 2015-4-17 21:34
话说为什么我的图片传不上来
作者: beyondbao    时间: 2015-4-17 21:35
本人离这个程度还很远很远
作者: major2015    时间: 2015-4-17 22:16
  1. int by = 0;
  2.                         while ((by =bufis.read())!=-1)
  3.                         {
  4.                                 bufos.write(by);//此处向bufos中写的是上面读取到的字节的个数int型,应该是一个byte型的
  5.                         }
复制代码


写错了

作者: 帅帅loyal    时间: 2015-4-18 10:12
beyondbao 发表于 2015-4-17 21:35
本人离这个程度还很远很远

好好学习,不会很远的
作者: 帅帅loyal    时间: 2015-4-18 10:20
major2015 发表于 2015-4-17 22:16
写错了

在视频里边老师就是这么写的呀,我看后边的视频里边说到read的时候是从byte到int类型的提升,然后到写的时候write方法会自动将类型转换为byte,这个问题昨天晚上一次又一次的看视频对比又写了几次测试了几次,发现我在代码中写的调用close()的是fis/fos流对象,如果换成缓冲区对象bufis/bufos来调用close()就不会出现这种情况了
作者: wls    时间: 2015-8-21 01:38
解决了吗??帮帮我  我不知道哪里出错了




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