《黑馬程式設計師》 IO之檔案拷貝
阿新 • • 發佈:2019-02-06
import java.io.*; class Demo8 { /* 檔案拷貝複習 複製d:\temp.txt中的內容到e\目錄中 如何獲取當前的檔案的名稱了 */ public static void main(String[] args) { File src; File destFile; try{ src=new File("d:\\temp.txt"); //獲取絕對路徑 String destPath=src.getAbsolutePath(); //從路徑中擷取檔名,然後組拼成路徑 String destName="e:\\"+destPath.substring(destPath.lastIndexOf("\\")+1); //生成目標物件 destFile=new File(destName); if(destFile.exists()) destFile.delete(); copyFile(src,destFile); System.out.println("複製完成"); }catch(Exception e){ e.printStackTrace(); } } public static void copyFile(File srcf,File destf) throws Exception{ //生成讀取流 //使用位元組來進行操作:使用輸入流和物件相關聯 //程式設計的時候儘量父類或介面便於程式的擴充套件 InputStream is=new FileInputStream(srcf); //生成輸出流 OutputStream os=new FileOutputStream(destf); //建立緩衝區。提高讀取效率.因為read方法可以讀取一個位元組也可以讀取位元組陣列 //使用字元流read方法可以支援讀取單個字元,也可以支援讀取一個數組 //當使用陣列時,都是把資料給讀取到陣列中,然後寫入的時候都是從陣列中寫的。 //這個陣列就是相當於一個緩衝區。 byte[] buffer=new byte[1024]; //1mb就夠用了 int len=0; //記錄住讀取到位元組的個數 while((len=is.read(buffer))!=-1){ //如果沒有讀取到檔案的末尾就一直讀取 //把讀取到的資料寫入到目標檔案中 os.write(buffer,0,len); } os.close(); //記得關閉流 is.close(); //關閉流 } }