1. 程式人生 > >BIO與NIO的方式實現檔案拷貝

BIO與NIO的方式實現檔案拷貝

面試題 - 程式設計實現檔案拷貝。(這個題目在筆試的時候經常出現,下面的程式碼給出了兩種實現方案)

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public final class Main {

    private
Main() { throw new AssertionError(); } /** * IO檔案拷貝 * @param source 被拷貝的原始檔 * @param target 拷貝出來的目的檔案 * @throws IOException */ public static void fileCopy(String source, String target) throws IOException { InputStream in = new FileInputStream(source); OutputStream out = new
FileOutputStream(target); byte[] buffer = new byte[4096]; int bytesToRead; while((bytesToRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesToRead); } } /** * nio實現檔案拷貝 * @param source * @param target * @throws IOException */
public static void fileCopyNIO(String source, String target) throws IOException { FileInputStream in = new FileInputStream(source); FileOutputStream out = new FileOutputStream(target); FileChannel inChannel = in.getChannel(); FileChannel outChannel = out.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(4096); while(inChannel.read(buffer) != -1) { buffer.flip(); outChannel.write(buffer); buffer.clear(); } } }