1. 使用FileStreams复制
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(); } }
2. 使用FileChannel复制
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(); } }
3. 使用Commons IO复制
private static void copyFileUsingApacheCommonsIO(File source, File dest) throws IOException { FileUtils.copyFile(source, dest); }
4. 使用Java7的Files类复制
private static void copyFileUsingJava7Files(File source, File dest) throws IOException { Files.copy(source.toPath(), dest.toPath()); }
下面看下java拷贝文件到另一个目录下的实现代码,具体代码如下所示:
package com.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; public class TestHtml { / * 复制单个文件 * @param oldPath String 原文件路径 如:c:/fqf.txt * @param newPath String 复制后路径 如:f:/fqf.txt * @return boolean */ public void copyFile(String oldPath, String newPath) { try { int bytesum = 0; int byteread = 0; File oldfile = new File(oldPath); if (oldfile.exists()) { //文件存在时 InputStream inStream = new FileInputStream(oldPath); //读入原文件 FileOutputStream fs = new FileOutputStream(newPath); byte[] buffer = new byte[1444]; int length; while ( (byteread = inStream.read(buffer)) != -1) { bytesum += byteread; //字节数 文件大小 System.out.println(bytesum); fs.write(buffer, 0, byteread); } inStream.close(); } } catch (Exception e) { System.out.println("复制单个文件操作出错"); e.printStackTrace(); } } / * 复制整个文件夹内容 * @param oldPath String 原文件路径 如:c:/fqf * @param newPath String 复制后路径 如:f:/fqf/ff * @return boolean */ public void copyFolder(String oldPath, String newPath) { try { (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹 File a=new File(oldPath); String[] file=a.list(); File temp=null; for (int i = 0; i < file.length; i++) { if(oldPath.endsWith(File.separator)){ temp=new File(oldPath+file[i]); } else{ temp=new File(oldPath+File.separator+file[i]); } if(temp.isFile()){ FileInputStream input = new FileInputStream(temp); FileOutputStream output = new FileOutputStream(newPath + "/" + (temp.getName()).toString()); byte[] b = new byte[1024 * 5]; int len; while ( (len = input.read(b)) != -1) { output.write(b, 0, len); } output.flush(); output.close(); input.close(); } if(temp.isDirectory()){//如果是子文件夹 copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); } } } catch (Exception e) { System.out.println("复制整个文件夹内容操作出错"); e.printStackTrace(); } } public static void main(String[] args)throws Exception { // //这是你的源文件,本身是存在的 // File beforefile = new File("C:/Users/Administrator/Desktop/Untitled-2.html"); // // //这是你要保存之后的文件,是自定义的,本身不存在 // File afterfile = new File("C:/Users/Administrator/Desktop/jiekou0/Untitled-2.html"); // // //定义文件输入流,用来读取beforefile文件 // FileInputStream fis = new FileInputStream(beforefile); // // //定义文件输出流,用来把信息写入afterfile文件中 // FileOutputStream fos = new FileOutputStream(afterfile); // // //文件缓存区 // byte[] b = new byte[1024]; // //将文件流信息读取文件缓存区,如果读取结果不为-1就代表文件没有读取完毕,反之已经读取完毕 // while(fis.read(b)!=-1){ // //将缓存区中的内容写到afterfile文件中 // fos.write(b); // fos.flush(); // } String oldPath="C:/Users/Administrator/Desktop/Untitled-2.html"; String newPath="C:/Users/Administrator/Desktop/jiekou0/Untitled-2.html"; TestHtml t=new TestHtml(); t.copyFile(oldPath, newPath); } }
总结
以上所述是小编给大家介绍的java复制文件的4种方式及拷贝文件到另一个目录下的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本网站网站的支持!
您可能感兴趣的文章:
- java文件复制代码片断(java实现文件拷贝)
- java使用nio2拷贝文件的示例
- java 实现文件夹的拷贝实例代码
- java高效实现大文件拷贝功能
- java实现文件拷贝的七种方式
- Java拷贝文件夹和删除文件夹代码实例
- JavaSE经典小练习项目之拷贝文件夹
- JAVA 拷贝文件的几种方式小结