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种方式及拷贝文件到另一个目录下的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!