Java  四种文件复制方式

 一.

 

Java IO 流分为字符流与字节流,字符流只处理文本,字节流可复制任意文件。本文整理四种常用文件复制代码,适合课堂作业直接提交。

 

二、基础字符流复制

 

java

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

 

public class CopyByChar {

    public static void main(String[] args) throws IOException {

        FileReader fr = new FileReader("src/a.txt");

        FileWriter fw = new FileWriter("src/a_copy.txt");

        int ch;

        while((ch = fr.read()) != -1){

            fw.write(ch);

        }

        fw.close();

        fr.close();

    }

}

 

 

特点:仅文本、效率低、入门基础

 

三、字符缓冲流复制

 

java

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

 

public class CopyByBuffChar {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new FileReader("src/a.txt"));

        BufferedWriter bw = new BufferedWriter(new FileWriter("src/a_copy2.txt"));

        String line;

        while((line = br.readLine()) != null){

            bw.write(line);

            bw.newLine();

        }

        bw.close();

        br.close();

    }

}

 

 

特点:带缓冲区、按行读取、文本最优

 

四、基础字节流复制(任意文件)

 

java

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

 

public class CopyByByte {

    public static void main(String[] args) throws IOException {

        FileInputStream fis = new FileInputStream("src/1.jpg");

        FileOutputStream fos = new FileOutputStream("src/1_copy.jpg");

        int b;

        while((b = fis.read()) != -1){

            fos.write(b);

        }

        fos.close();

        fis.close();

    }

}

 

 

特点:支持图片/视频/压缩包,单字节读写较慢

 

五、字节缓冲流复制

 

java

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

 

public class CopyByBuffByte {

    public static void main(String[] args) throws IOException {

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src/1.jpg"));

        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/1_copy2.jpg"));

        byte[] buf = new byte[1024];

        int len;

        while((len = bis.read(buf)) != -1){

            bos.write(buf,0,len);

        }

        bos.close();

        bis.close();

    }

}

 

 

特点:速度最快、万能通用、作业首选

 

六、总结对比

 

1. 字符流:只复制文本文件

2. 字节流:可复制所有类型文件

3. 缓冲流:读写效率远高于普通流

4. 开发优先使用字节缓冲流

 

 

更多推荐