1. 程式人生 > >java.io流--複製檔案

java.io流--複製檔案

主要分為位元組流和字元流:

說明 位元組流 字元流
抽象基類 InputStream,OutputStream Reader,Writer
節點流 FileInputStream,FileOutputStream FileReader,FileWriter
緩衝流 BufferdInputStream,BufferdOutputStream BufferdReader,BufferdWriter
轉換流   InputStreamReader,OutputStreamWriter
     
     

* FileInputStream和BufferdInputStreamd包含同樣的方法,FileOutputStream和BufferdOutputStream用法相同,只不過前者會清空檔案內容寫入,後者會在原來的檔案內容後面追加

* BufferdReader提供了一個緩衝區,可以一次讀一整行(readLine())

* inputStreamReader / outPutStreamReader  可以把位元組流轉換為位元組流

位元組流實現檔案複製

/**
 * 位元組流,讀寫以byte為單位
 * Created on 2018年9月5日<br>
 */
public class ByteTest {
    public static void main(String[] args) throws IOException  {
        File file = new File("C:/Users/26725/Desktop/test.txt");
        File file1 = new File("C:/Users/26725/Desktop/testout.txt");
        if (!file.exists()) {
            file.createNewFile();
        }
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos = new FileOutputStream(file1);
        byte[] buffer = new byte[4];
        int length;
        while(-1!= (length=fis.read(buffer))){
            String s = new String(buffer,0,length);
            //每次讀完都需要清空buffer
            byte[] bytes = s.getBytes();
            fos.write(bytes);
        }
        fis.close();
        fos.close();
    }
}

字元流實現檔案複製

/**
 * 字元流,讀寫以char為單位,速度更快
 * Created on 2018年9月5日<br>
 */
public class CharTest {
    public static void main(String[] args) throws IOException{
        File file = new File("C:\\Users\\26725\\Desktop\\test.txt");
        File file2 = new File("C:\\Users\\26725\\Desktop\\testout.txt");
        //因為亂碼,通過inputStreamReader和OutputStreamWriter轉碼
        InputStreamReader isr = new InputStreamReader(new FileInputStream(file) ,"utf-8");
        BufferedReader reader = new BufferedReader(isr);
        BufferedWriter writer = new  BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2),"utf-8"));
        char[]  chars = new char[2];
        int length;
        while (-1!=(length=reader.read(chars))) {
            String s  = new String(chars,0,length);
            writer.write(s);
        }
        reader.close();
        writer.close();
    }
}