Java 实现文件复制

223 阅读1分钟

在文件复制中,通常来说,都是一边读一边写,将读取的数据写入要写入的文件中,这也是通用做法。

下面看看具体实现:

package learnjava.fileIO;

import java.io.*;

public class CopyFileDemo {
    public static void main(String[] args) {
        copyFileByStream();
        copyFileByChar();
    }

    public static void copyFileByStream() {
        System.out.println("Start, Using inputStream || outputStream to copy file...");
        String src = "D:\software\intelli D\myDemo\src\learnjava\fileIO\file_src";
        String dst = "D:\software\intelli D\myDemo\src\learnjava\fileIO\file_dst";

        try {
            // create obj
            FileInputStream fis = new FileInputStream(src);
            FileOutputStream fos = new FileOutputStream(dst);

            // loop read and write
            byte[] buf = new byte[1024];
            int len;
            while ((len = fis.read(buf)) > 0) {
                fos.write(buf, 0, len);
            }

            // close obj
            fis.close();
            fos.close();

            System.out.println("End, Using inputStream || outputStream to copy file...");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void copyFileByChar() {
        System.out.println("Start, Using Reader || Writer to copy file...");
        String src = "D:\software\intelli D\myDemo\src\learnjava\fileIO\file_src";
        String dst = "D:\software\intelli D\myDemo\src\learnjava\fileIO\file_dst";
        try {
            // create obj
            FileReader fis = new FileReader(src);
            FileWriter fos = new FileWriter(dst);

            // loop read and write
            char[] buf = new char[1024];
            int len;
            while ((len = fis.read(buf)) > 0) {
                fos.write(buf, 0, len);
            }

            // close obj
            fis.close();
            fos.close();

            System.out.println("End, Using FileReader and FileWriter to copy file...");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // copy file by buffered stream
    public static void copyFileByBufferedStream() {

    }

    // copy file by buffered reader and writer
    public static void copyFIleByBuffered() {

    }
}