更新時間:2019-08-29 09:57:06 來源:動力節(jié)點 瀏覽2654次
盡管Java提供了一個可以處理文件的IO操作類。 但是沒有一個復制文件的方法。 復制文件是一個重要的操作,當你的程序必須處理很多文件相關的時候。 然而有幾種方法可以進行Java文件復制操作,下面動力節(jié)點java學院小編為大家分享Java復制文件都有哪幾種方式呢?
1、使用Commons IO復制
Apache Commons IO提供拷貝文件方法在其FileUtils類,可用于復制一個文件到另一個地方。它非常方便使用Apache Commons FileUtils類時,您已經(jīng)使用您的項目。基本上,這個類使用Java NIO FileChannel內(nèi)部。 這是第三種方法的代碼:
private static void copyFileUsingApacheCommonsIO(File source, File dest)
throws IOException {
FileUtils.copyFile(source, dest);
}
2、使用FileStreams復制
這是最經(jīng)典的方式將一個文件的內(nèi)容復制到另一個文件中。 使用FileInputStream讀取文件A的字節(jié),使用FileOutputStream寫入到文件B。 這是第一個方法的代碼:
private static void copyFileUsingFileStreams(File source, File dest)
throws IOException {
InputStream input = null;
OutputStream output = null;
try {
input = new FileInputStream(source);
output = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead);
}
} finally {
input.close();
output.close();
}
}
正如你所看到的我們執(zhí)行幾個讀和寫操作try的數(shù)據(jù),所以這應該是一個低效率的,下一個方法我們將看到新的方式。
3、使用Java7的Files類復制
如果你有一些經(jīng)驗在Java 7中你可能會知道,可以使用復制方法的Files類文件,從一個文件復制到另一個文件。 這是第四個方法的代碼:
private static void copyFileUsingJava7Files(File source, File dest)
throws IOException {
Files.copy(source.toPath(), dest.toPath());
}
4、使用FileChannel復制
Java NIO包括transferFrom方法,根據(jù)文檔應該比文件流復制的速度更快。 這是第二種方法的代碼:
private static void copyFileUsingFileChannels(File source, File dest) throws IOException {
FileChannel inputChannel = null;
FileChannel outputChannel = null;
try {
inputChannel = new FileInputStream(source).getChannel();
outputChannel = new FileOutputStream(dest).getChannel();
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
} finally {
inputChannel.close();
outputChannel.close();
}
}
以上就是動力節(jié)點java學院小編分享的“Java復制文件都有哪幾種方式”的內(nèi)容,希望對大家有幫助,更多精彩內(nèi)容請繼續(xù)關注動力節(jié)點java學院官網(wǎng),每天會有精彩內(nèi)容分享與你。
相關免費視頻教程推薦
java文本文件復制視頻教程下載地址:http://www.dabaquan.cn/xiazai/2481.html