Java 利用緩沖字節流來實現視頻、音頻、圖片的復制粘貼


InputStream:繼承自InputStream的流都是用於向程序中輸入數據的,且數據單位都是字節(8位)。

OutputSteam:繼承自OutputStream的流都是程序用於向外輸出數據的,且數據單位都是字節(8位)。

Reader:繼承自Reader的流都是用於向程序中輸入數據的,且數據單位都是字符(16位)。

Writer:繼承自Writer的流都是程序用於向外輸出數據的,且數據單位都是字符(16位)。

package IOStream;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class BufferedStreamDemo {
/**
 * 利用緩沖字節流來實現視頻、音頻、圖片的復制粘貼
 */
    private static final String FilePath1 = "D:/圖片文件包/夫人.jpg";// 要復制的文件路徑
    private static final String FilePath2 = "E:/夫人.jpg"; // 文件目標路徑
    
    /**
     * 1.使用緩存流拷貝文件
     * 2.記錄拷貝過程用時
     */
    public static long CopyFileByBufferedStream(){
        File file1 = new File(FilePath1); // 創建要復制的文件對象
        if(!file1.exists()){ // 判斷文件路徑是否存在
            System.out.println("文件不存在!");
            return 0;
        }
        long starTime = System.currentTimeMillis(); // 記錄復制文件所需時間
        
        InputStream inStream = null; // 創建字節輸入流
        BufferedInputStream bInStream = null; // 創建緩沖輸入字節流
        OutputStream outStream = null; // 創建字節輸出流
        BufferedOutputStream bOutStream = null; // 創建緩沖字節輸出流
        
        try {
            inStream = new FileInputStream(FilePath1); // 創建文件輸入流,指向路徑可以是:FilePath1,也可以是file1
            bInStream = new BufferedInputStream(inStream); // 用緩沖輸入流裝飾文件輸入流
            outStream = new FileOutputStream(FilePath2); // 創建文件輸出流,指向目標路徑
            bOutStream = new BufferedOutputStream(outStream); // 用緩沖輸出流來包裝文件輸出流
            
            int i = 0;
            while((i = bInStream.read()) != -1){
                bOutStream.write(i);    // 對接流,輸出文件
            }
            
            System.out.println("文件拷貝完成!");
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                bOutStream.close();
                bInStream.close();
                
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        long endTime = System.currentTimeMillis();
        return endTime - starTime;
    }
    
    public static void main(String[] args) {
        
        long time = CopyFileByBufferedStream();
        System.out.println("拷貝用時:" + time + "ms");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM