演示MP3和图片以及.java文件的复制

 

    通过学习MP3,图片及java文件的复制,可以把一个文件从一处复制到另一处,我学到在复制的原理,基本上都是通过字节流的缓冲区完成,下面举例:

1、演示MP3的复制,通过缓冲区 
 
public class CopyMp3 {
public static void main(String[] args) throws IOException {
long start=System.currentTimeMillis();//开始运行时间
copy_2();
long end=System.currentTimeMillis();//结束运行时间
System.out.println((end-start)+"毫秒");//总的运行时间
}
//通过字节流的缓冲区完成复制
public static void copy_1() throws IOException
{
BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("0.mp3")); //创建带有缓冲区的读取字节流对象
BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("1.mp3"));//创建带有缓冲区的写字节流对象
int by=0;
while((by=bufis.read())!=-1)//字节流的循环读取
{
bufos.write(by);  //字节流写入
}
bufos.close(); //关闭写字节流
bufis.close();//关闭读字节流
}

//通过自定义字节流的缓冲区完成复制
public static void copy_2() throws IOException
{
MyBufferedInputStream bufis=new MyBufferedInputStream(new FileInputStream("0.mp3")); //创建自定义带有缓冲区的读取字节流对象
BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("1.mp3"));//创建自定义带有缓冲区的写字节流对象
int by=0;
while((by=bufis.myRead())!=-1)//字节流的循环读取
{
bufos.write(by);//字节流写入
}
bufos.close();//关闭写字节流
bufis.myClose();//关闭读字节流
}

 2、复制一个图片

 思路:
  1,用字节读取流对象和图片关联
  2,用字节写入流对象创建一个图片文件,用于存储获取到的图片。
  3,通过循环读取,完成数据存储
  4,关闭资源
  
 
public class CopyPic {
public static void main(String[] args) {
 FileOutputStream fos=null;    //定义文件输出流对象
 FileInputStream fis=null;       //定义文件输入流对象
 try { 
fos=new FileOutputStream("2.jpeg"); //创建文件输出流对象
 fis=new FileInputStream("1.jpeg"); //创建文件输入流对象
 byte[] buf=new byte[1024];
 int len=0;
 while((len=fis.read(buf))!=-1)//循环读取
 {
 fos.write(buf,0,len);  //写入输出流
 } 
 }
 catch (IOException e)
 {
throw new RuntimeException("复制文件失败");
 }
 finally{
try {
if(fis!=null) fis.close();//关闭文件输入流
}
catch (IOException e)
{
throw new  RuntimeException("读取关闭失败");
}
try {
if(fos!=null) fos.close();   //关闭文件输出流
}
catch (IOException e)
{
throw new  RuntimeException("写入关闭失败");
}
  }
  }
}

3、通过缓冲区复制一个.java文件
public class CopyTextbuf {
public static void main(String[] args)  {
BufferedReader bufr=null;    //定义读取缓冲区
BufferedWriter bufw=null;    //定义写入流缓冲区

try
{ bufr=new BufferedReader(new FileReader("BufferedWriterDemo.java"));  //创建读取缓冲区对象
 bufw=new BufferedWriter(new FileWriter("BufW_copy.txt")); //创建写入流对象
 String line =null;
 while((line=bufr.readLine())!=null)     //循环读取一行
 {  
bufw.write(line);  //写入缓冲流
 bufw.newLine();//换行
 bufw.flush();//刷新
  }
}
catch(IOException e)
{   System.out.println(e);
throw new RuntimeException("读写失败");
}
        finally{
        try{
        if(bufr!=null) bufr.close();  //关闭读取流对象缓冲区
        }
        catch(IOException e)
        {
        throw new RuntimeException("读取关闭失败");
        }
        try{
        if(bufw!=null) bufw.close();  //关闭写入读取流对象缓冲区
        }
        catch(IOException e)
        {
        throw new RuntimeException("写入关闭失败");
        }
        }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Robust28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值