1. 程式人生 > >java中檔案IO之圖片的拷貝解析

java中檔案IO之圖片的拷貝解析

java中的檔案io較之c中的IO更加的體現了java語言中封裝的特性,學習java最基礎的也是最最重要的無非就是這四點: 

《1》封裝

《2》繼承

《3》抽象

《4》多型

在c中的檔案IO與標準IO想必大多數的人們都還記憶尤新,那麼對於java語言的檔案IO呢,特別是對於圖片的拷貝,那麼今天這篇就先捨棄其它不談,就談談java語言實現圖片的拷貝。

在java中,對於檔案的操作分為,以位元組流的形式和以字元流的形式。字元流常用作文字的操作,而子節流的方式則文字圖片都可以。所以對於圖片的拷貝我們毫無懸念的懸著了以位元組流的方式來進行拷貝。

下面就詳細的解析下程式碼的實現:

package com;

//當前類需要其它包中的類需要在這裡 import一下(寫於類外)
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {

	/**
	 *  圖片的拷貝
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//建立資料夾
		File fileDir = new File("F:/yang");
		fileDir.mkdir();
		
		//建立兩個物件 分別為將要複製的和被複制的
		File f = new File("F:/my_pic.png");
		File fileNew = new File("F:/yang/my_pic.png");
		
		//如果檔案不存在則建立一個和將要被複制的檔名字一樣的檔案
		if(!fileNew.exists())
		{
			try {
				fileNew.createNewFile();
				System.out.println("建立成功");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		//建立位元組  圖片只有使用位元組流的形式來進行拷貝
		byte data[] = new byte[1024];
		int n = 0; //n為讀取檔案的大小
		
		//讀取檔案到字元陣列內  然後從字元陣列內寫到目標檔案內
		FileOutputStream foutput = null; 
		FileInputStream finput = null;
		try {
			finput = new FileInputStream(f);
			foutput = new FileOutputStream(fileNew);
		//迴圈的一直把檔案讀完  直到為-1時(-1時表示讀完了)  
		while((n = finput.read(data)) != -1)
			foutput.write(data,0,n);
			 
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		//try catch為異常情況的處理   try後放的是可能出現異常的語句
		//catch後面放的是異常情況下的提示性語句
		finally{
		 try {
			finput.close();
			 foutput.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}
	System.out.println(" 復  制  完  畢  ");
	} 
}

好了,以上就是最簡單的圖片的拷貝了,希望還處於初期java的童鞋們,好好的努力啊。