java复制文件的4种方式及拷贝文件到另一个目录下的实例代码
尽管Java提供了一个可以处理文件的IO操作类。但是没有一个复制文件的方法。复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候。然而有几种方法可以进行Java文件复制操作,下面列举出4中最受欢迎的方式。
1.使用FileStreams复制
这是最经典的方式将一个文件的内容复制到另一个文件中。使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B。这是第一个方法的代码:
privatestaticvoidcopyFileUsingFileStreams(Filesource,Filedest)
throwsIOException{
InputStreaminput=null;
OutputStreamoutput=null;
try{
input=newFileInputStream(source);
output=newFileOutputStream(dest);
byte[]buf=newbyte[1024];
intbytesRead;
while((bytesRead=input.read(buf))>0){
output.write(buf,0,bytesRead);
}
}finally{
input.close();
output.close();
}
}
正如你所看到的我们执行几个读和写操作try的数据,所以这应该是一个低效率的,下一个方法我们将看到新的方式。
2.使用FileChannel复制
JavaNIO包括transferFrom方法,根据文档应该比文件流复制的速度更快。这是第二种方法的代码:
privatestaticvoidcopyFileUsingFileChannels(Filesource,Filedest)throwsIOException{
FileChannelinputChannel=null;
FileChanneloutputChannel=null;
try{
inputChannel=newFileInputStream(source).getChannel();
outputChannel=newFileOutputStream(dest).getChannel();
outputChannel.transferFrom(inputChannel,0,inputChannel.size());
}finally{
inputChannel.close();
outputChannel.close();
}
}
3.使用CommonsIO复制
ApacheCommonsIO提供拷贝文件方法在其FileUtils类,可用于复制一个文件到另一个地方。它非常方便使用ApacheCommonsFileUtils类时,您已经使用您的项目。基本上,这个类使用JavaNIOFileChannel内部。这是第三种方法的代码:
privatestaticvoidcopyFileUsingApacheCommonsIO(Filesource,Filedest)
throwsIOException{
FileUtils.copyFile(source,dest);
}
4.使用Java7的Files类复制
如果你有一些经验在Java7中你可能会知道,可以使用复制方法的Files类文件,从一个文件复制到另一个文件。这是第四个方法的代码:
privatestaticvoidcopyFileUsingJava7Files(Filesource,Filedest)
throwsIOException{
Files.copy(source.toPath(),dest.toPath());
}
下面看下java拷贝文件到另一个目录下的实现代码,具体代码如下所示:
packagecom.util;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStream;
publicclassTestHtml{
/**
*复制单个文件
*@paramoldPathString原文件路径如:c:/fqf.txt
*@paramnewPathString复制后路径如:f:/fqf.txt
*@returnboolean
*/
publicvoidcopyFile(StringoldPath,StringnewPath){
try{
intbytesum=0;
intbyteread=0;
Fileoldfile=newFile(oldPath);
if(oldfile.exists()){//文件存在时
InputStreaminStream=newFileInputStream(oldPath);//读入原文件
FileOutputStreamfs=newFileOutputStream(newPath);
byte[]buffer=newbyte[1444];
intlength;
while((byteread=inStream.read(buffer))!=-1){
bytesum+=byteread;//字节数文件大小
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
inStream.close();
}
}
catch(Exceptione){
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}
/**
*复制整个文件夹内容
*@paramoldPathString原文件路径如:c:/fqf
*@paramnewPathString复制后路径如:f:/fqf/ff
*@returnboolean
*/
publicvoidcopyFolder(StringoldPath,StringnewPath){
try{
(newFile(newPath)).mkdirs();//如果文件夹不存在则建立新文件夹
Filea=newFile(oldPath);
String[]file=a.list();
Filetemp=null;
for(inti=0;i
总结
以上所述是小编给大家介绍的java复制文件的4种方式及拷贝文件到另一个目录下的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!