Java中几种文件拷贝方式

>>最全面的Java面试大纲及答案解析(建议收藏)  

Java中几种文件拷贝方式

利用java.io.类库,使用FileInputStream读取文件,使用FileOutputStream写入文件,代码如下所示:

public static void copyFileByStream(File source, File target) {
        try {
            InputStream is = new FileInputStream(source);
            OutputStream os = new FileOutputStream(target);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

利用java.nio类库提供的transferTo或transferFrom方式实现,代码如下所示:

public static void copyFileByChannel(File source, File target) {
        try {
            FileChannel inputChannel = new FileInputStream(source).getChannel();
            FileChannel outputChannel = new FileOutputStream(target).getChannel();
            //transferTo实现
            long count = inputChannel.size();
            while (count > 0) {
                long transferred = inputChannel.transferTo(inputChannel.position(), count, outputChannel);
                count -= transferred;
            }
            //transferFrom实现
            //outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

直接调用jdk1.7版本中的java.nio.file.Files.copy()实现,代码如下所示:

public static void copyFileByFiles(File source, File target) {
        try {
            Files.copy(source.toPath(), target.toPath());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


原文始发于微信公众号(一盏红茶):Java中几种文件拷贝方式