1.經過IO流的字節流,實現兩個文件之間內容的拷貝java
package file; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Test { public static void main(String\[\] args) throws IOException { //把IO流的場景,想象成兩個驛站之間在傳遞數據的一個過程 File file1 = new File("/Users/apple/Desktop/洗稿專用.docx"); //File類表明固定不變的驛站,他們負責把驛站蓋起來,但不負責人和傳輸過程,這裏file1是源文件,表明信息源頭所在的驛站 File file2 = new File("/Users/apple/Desktop/洗稿專用222.docx"); //這裏file2是目標文件,表明信息最終要傳遞到的驛站 FileInputStream fis = new FileInputStream(file1); //FileInputStream和FileOutputStream分別表明兩匹馬,前者是源頭驛站送信的馬,後者是目標驛站送信的馬 byte\[\] all = new byte\[(int)file1.length()\]; //byte\[\]表明包裹,也就是從驛站的數據拿來,放在立刻運輸到下一個驛站,中間的信息載體,須要一個盒子把它裝進去,這個盒子就是byte fis.read(all); //fis.read(all)表明最開始的時候,驛站的馬,把東西拿過來,放在包裹裏 for(int i = 0; i < all.length; i++) { System.out.print(all\[i\]); } FileOutputStream fos = new FileOutputStream(file2); //這一句表明馬的目的地要奔向file2這個地方 fos.write(all); //這一句表明fos這一批馬,要把all這個包裹,放在file2這個驛站裏面 fis.close(); fos.close(); //最終的close就是兩個馬結束任務,讓他們回去,這個命令必須執行,不然會一直佔用馬自己的資源。 } }
2.經過IO流的字節流,實現兩個文件之間內容的拷貝(與上一題不一樣的是,這一題的目標文件路徑不存在,須要本身判斷而且建立)app
package file; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class TestMake { public static void main(String\[\] args) { // TODO Auto-generated method stub File fileInput = new File("/Users/apple/Desktop/WechatIMG739.jpeg"); //先把源文件的地址找到,而後建立成File對象 File fileOut = new File("/Users/apple/Desktop/A/B/C/D/E/WechatIMG739.jpeg"); //再把目標文件最終要放置的地點,建立成File對象 File fileFather = fileOut.getParentFile(); //目標文件的父文件夾路徑,也建立成一個File對象 System.out.println(fileOut.exists()); if(!fileFather.exists()) { //目標文件的父文件夾路徑,先檢查一下是否存在,假設不存在,則本身建立一個 System.out.println(fileFather); fileFather.mkdirs(); //建立一個目標文件的父文件夾路徑 } byte\[\] all = new byte\[(int)fileInput.length()\]; //建立一個跟目標文件同樣大的存儲緩衝包裹 try { FileInputStream fis = new FileInputStream(fileInput); //建立一個輸入流 FileOutputStream fos = new FileOutputStream(fileOut); //建立一個輸出流 try { //關於read和wirte,咱們不用在意他究竟是讀仍是寫,具體流的方向,要看是輸入流仍是輸出流,流自己的方向,已經決定了動做的方向 fis.read(all); //用輸入流把源文件的內容,吸入到包裹all當中 fos.write(all); //把all包裹中的內容,經過fos輸出流轉入到目標問價當中去 fis.close(); fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }