JDK提供复制文件三种方式

来源:互联网 发布:java开发百度云播放器 编辑:程序博客网 时间:2024/06/16 10:02

利用I/O包的字节输入输出流

public static void copyFileUsingStream(File src,File dest){        InputStream is = null;        OutputStream os = null;        byte[] buffer = new byte[1024];//这里的缓冲可自行设置        int readBytes ;        try {            is = new FileInputStream(src);            os = new FileOutputStream(dest);        } catch (FileNotFoundException e) {            e.printStackTrace();        }        try {            while((readBytes = is.read(buffer))>0){                os.write(buffer,0, readBytes);            }        } catch (IOException e) {            e.printStackTrace();        }}

利用java.nio.channels包中的FileChannel

@SuppressWarnings("resource")public static void copyFileUsingFileChannel(File src,File dest){    FileChannel in = null;    FileChannel out = null;    try {        in = new FileInputStream(src).getChannel();        out = new FileOutputStream(dest).getChannel();        out.transferFrom(in, 0, in.size());    } catch (FileNotFoundException e) {        e.printStackTrace();    } catch (IOException e) {        e.printStackTrace();    }}

利用java.nio.file.Files类(JDK1.7以后)的静态方法copy()

public static void copyFileUsingFiles(File src,File dest){        try {            Files.copy(src.toPath(), dest.toPath());        } catch (IOException e) {            e.printStackTrace();        }}

随便测试了下,小文件用I/O原生字节流好一些,较大的文件用Files.copy()要好很多。

原创粉丝点击