演示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("寫入關閉失敗");
        }
        }
}
 

發佈了30 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章