通常来说,FileChannel比普通的缓冲输入输出流有更高的效率
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.nio.channels.FileChannel;
public
class
fileChannelCopy {
public
static
void
copy(File s, File d) {
FileInputStream fi =
null
;
FileOutputStream fo =
null
;
FileChannel in =
null
;
FileChannel out =
null
;
try
{
fi =
new
FileInputStream(s);
fo =
new
FileOutputStream(d);
in = fi.getChannel();
//得到对应的文件通道
out = fo.getChannel();
//得到对应的文件通道
in.transferTo(
0
, in.size(), out);
//连接两个通道,并且从in通道读取,然后写入out通道
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
try
{
fi.close();
in.close();
fo.close();
out.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
public
static
void
main(String[] args) {
File s =
new
File(
"e:\java.zip"
);
File d =
new
File(
"d:\java.zip"
);
new
fileChannelCopy().copy(s,d);
System.out.println(
"复制完成"
);
}
}