關於學習IO流時,作的練習,以及本身理解(一)

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();

        }

    }

  

}
相關文章
相關標籤/搜索