java文件复制最快的方法!
2013-02-19 17:34
351 查看
package a_a_a; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class FileCopy { public static void main(String[] args) { File srcFile = new File("G:/2144/bei.xlsx"); File destDir = new File("G:/2144/bei/"); String newFileName = "bei.xlsx"; FileCopy.copyFile(srcFile, destDir, newFileName); // long t1 = System.currentTimeMillis(); // for (int i = 0; i < 100; i++) { // FileCopyTest.copyFile1(srcFile, destDir, newFileName); // } long t2 = System.currentTimeMillis(); for (int i = 0; i < 100; i++) { FileCopy.copyFile(srcFile, destDir, newFileName); } long t3 = System.currentTimeMillis(); // System.out.println(t2-t1); System.out.println(t3-t2); System.out.println(250); } /** * 复制文件 * * @param srcFile * 源文件File * @param destDir * 目标目录File * @param newFileName * 新文件名 * @return 实际复制的字节数,如果文件、目录不存在、文件为null或者发生IO异常,返回-1 */ public long copyFile1(File srcFile, File destDir, String newFileName) { long copySizes = 0; if (!srcFile.exists()) { System.out.println("源文件不存在"); copySizes = -1; } else if (!destDir.exists()) { System.out.println("目标目录不存在"); copySizes = -1; } else if (newFileName == null) { System.out.println("文件名为null"); copySizes = -1; } else { try { BufferedInputStream bin = new BufferedInputStream( new FileInputStream(srcFile)); BufferedOutputStream bout = new BufferedOutputStream( new FileOutputStream(new File(destDir, newFileName))); int b = 0, i = 0; while ((b = bin.read()) != -1) { bout.write(b); i++; } bout.flush(); bin.close(); bout.close(); copySizes = i; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return copySizes; } /** * 复制文件(以超快的速度复制文件) * * @param srcFile * 源文件File * @param destDir * 目标目录File * @param newFileName * 新文件名 * @return 实际复制的字节数,如果文件、目录不存在、文件为null或者发生IO异常,返回-1 */ public static long copyFile(File srcFile, File destDir, String newFileName) { long copySizes = 0; if (!srcFile.exists()) { System.out.println("源文件不存在"); copySizes = -1; } else if (!destDir.exists()) { System.out.println("目标目录不存在"); copySizes = -1; } else if (newFileName == null) { System.out.println("文件名为null"); copySizes = -1; } else { try { FileChannel fcin = new FileInputStream(srcFile).getChannel(); FileChannel fcout = new FileOutputStream(new File(destDir, newFileName)).getChannel(); long size = fcin.size(); fcin.transferTo(0, fcin.size(), fcout); fcin.close(); fcout.close(); copySizes = size; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return copySizes; } }
相关文章推荐
- java io复制文件方法的中文注释
- FileChannel-Java 复制文件的高效方法
- Java: 复制文件最快方法
- Java 复制文件的高效方法
- 【Java学习笔记】基础知识学习18【一个小文件的复制方法】
- Java 复制文件的高效方法
- java中file的一些用法:文件复制,lis方法和listfiles方法等
- java中IO文件复制两种方法及对比
- java递归方法复制文件和文件夹
- java 文件读取操作和复制操作(多种方法比较)
- java种复制文件的N种方法
- java使用缓冲流复制文件的方法
- Java 复制文件的高效方法
- java.io流实现文件复制的方法
- 4 Ways to Copy File in Java -- Java 复制文件的方法
- java 3中方法复制一个文件
- Java中的4种文件复制方法
- java复制文件的简单方法
- java中File类中的常用的方法 复制,读文件
- 复制文件或文件夹Java方法