黑马程序员技术交流社区

标题: 据说面试必考题--复制mp3文件 [打印本页]

作者: cxdzh    时间: 2014-10-24 18:05
标题: 据说面试必考题--复制mp3文件
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;

  6. public class FileInputStreamDemo {

  7.         public static void main(String[] args) throws IOException {
  8.                 copy_1();
  9.                 copy_2();
  10.                 copy_3();               
  11.         }

  12.        
  13.         //使用缓冲区的复制方法.
  14.         public static void copy_3() throws IOException {
  15.                 //创建字节输入流对象,读取源文件.
  16.                 FileInputStream fi=new FileInputStream("d:\\迅雷下载\\你给我听好.mp3");
  17.                 //创建字节输入流缓冲区对象.
  18.                 BufferedInputStream bffi=new BufferedInputStream(fi);
  19.                
  20.                 //创建字节输出流对象,写入目标文件.
  21.                 FileOutputStream fo=new FileOutputStream("d:\\你给我听好_3.mp3");               
  22.                 //创建字节输出流缓冲区对象.
  23.                 BufferedOutputStream bffo=new BufferedOutputStream(fo);
  24.                
  25.                 //定义一个整数型变量,用来判断读取结果.
  26.                 int ch=0;
  27.                 //使用输入流缓冲区对象方法读取源文件数据,如果读取结果不等于-1,即代表读取到数据,进行循环.
  28.                 while((ch=bffi.read())!=-1)
  29.                 {
  30.                 bffo.write(ch);        //使用输出流缓冲区对象方法,将读取结果写入输出流缓冲区.
  31.                 }
  32.                 bffi.close();//循环完成后关闭源文件.
  33.                 bffo.close();//循环完成后将输出流缓冲区数据写入目标文件,并关闭目标文件.
  34.         }
  35.         //使用自定义缓冲区的复制方法.直接创建需复制文件同等大小的字节数组,但此方法有安全隐患,不适用大文件.
  36.         public static void copy_2() throws IOException {
  37.                 //创建字节输入流对象,读取源文件.
  38.                 FileInputStream fi=new FileInputStream("d:\\迅雷下载\\你给我听好.mp3");               
  39.                 //创建字节输出流对象,写入目标文件.
  40.                 FileOutputStream fo=new FileOutputStream("d:\\你给我听好_2.mp3");               

  41.                 //创建一个跟源文件同等大小的字节数组,用来临时存储从源文件读取的数据.
  42.                 byte[] buf=new byte[fi.available()];
  43.                 fi.read(buf);//使用输入流对象方法,读取源文件内容并存储到数组.
  44.                 fo.write(buf);//使用输出流对象方法,将数组内容写入目标文件.
  45.                 fi.close();//关闭源文件.
  46.                 fo.close();//关闭目标文件.
  47.         }
  48.         //使用自定义缓冲区的复制方法.创建一个1024字节的数组,循环读取源数据并写入目标文件.
  49.         private static void copy_1() throws IOException {
  50.                 //创建字节输入流对象,读取源文件.
  51.                 FileInputStream fi=new FileInputStream("d:\\迅雷下载\\你给我听好.mp3");               
  52.                 //创建字节输出流对象,写入目标文件.
  53.                 FileOutputStream fo=new FileOutputStream("d:\\你给我听好_1.mp3");               

  54.                 //创建一个1024字节的数组,用来临时存储从源文件读取的数据.
  55.                 byte[] buf=new byte[1024];
  56.                 int len=0;//定义一个整数型变量来存储读取到的字节数.
  57.                 while((len=fi.read(buf))!=-1)//使用输入流方法读取若干字节存储到buf数组,如果读取到的字节数不等于-1,即代表读取到数据,进入循环.
  58.                 {
  59.                 fo.write(buf,0,len);//使用输出流对象方法,将字节数组中,读取到的len个数据写入到目标文件.
  60.                 }
  61.                 fi.close();//关闭源文件.
  62.                 fo.close();//关闭目标文件.
  63.         }

  64. }
复制代码

作者: 杜工    时间: 2014-10-24 18:09
的确考的好频繁。。。
作者: Paul_Chang    时间: 2014-10-24 18:47
看了好几个分享,貌似都有
作者: zjy519893509    时间: 2014-10-24 18:53
学习了!
作者: 〆_、Wali    时间: 2014-10-24 19:13
这注释加的,看的人眼花缭乱!
作者: ☆枫の云    时间: 2014-10-24 21:25
感谢楼主分享!
作者: 袁枭飞    时间: 2014-10-25 07:58
暂时还看不懂
作者: Tsinvat    时间: 2014-10-25 08:18
你还能发这么长?我写了一点点就发送失败错误
作者: 黄小橙    时间: 2014-10-25 08:51
看看。。。。。。。。
作者: lylHAHA    时间: 2014-10-25 09:09
学习下……
作者: 天蝎降降温    时间: 2014-10-25 14:38
给我出的那两个题,论坛都没见过,我的个擦擦,幸好我会一点。
作者: yangzhong1991    时间: 2014-10-25 15:56
为什么你的代码这么长...明明只要短短几行就可以解决的...还有不是必考,我面试就没考到
作者: cxdzh    时间: 2014-10-25 16:04
天蝎降降温 发表于 2014-10-25 14:38
给我出的那两个题,论坛都没见过,我的个擦擦,幸好我会一点。

求分享题目..
作者: cxdzh    时间: 2014-10-25 16:06
yangzhong1991 发表于 2014-10-25 15:56
为什么你的代码这么长...明明只要短短几行就可以解决的...还有不是必考,我面试就没考到 ...

没见我用3种方法复制了3份么...这是学习笔记...
作者: youtianlong123    时间: 2014-10-25 16:24
考试时随便写一种就可以了吧
作者: 空洞的望着窗外    时间: 2014-10-25 20:45
最近好像是很频繁。
作者: 饼子    时间: 2014-10-26 14:36
感谢楼主分享
作者: nyk    时间: 2014-10-26 16:28
学习下……
作者: Tae丶Yeon    时间: 2014-10-26 22:06
学习学习~~




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