package test_fb_api; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.channels.FileChannel; import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import org.apache.commons.io.FileUtils; public class test4wayCopy { public static void main(String[] args) { System.out.println("copy file"); String src = "C:/Users/1409035/Desktop/FTP_server_backup/test.txt"; String des = "C:/Users/1409035/Desktop/FTP_server_backup/candelete/test1.txt"; copyFileUsingApacheCommonsIO(new File(src), new File(des)); des = "C:/Users/1409035/Desktop/FTP_server_backup/candelete/test2.txt"; copyFileUsingFileStreams(new File(src), new File(des)); des = "C:/Users/1409035/Desktop/FTP_server_backup/candelete/test3.txt"; copyFileUsingFileChannels(new File(src), new File(des)); des = "C:/Users/1409035/Desktop/FTP_server_backup/candelete/test4.txt"; copyFileUsingFileChannels(new File(src), new File(des)); System.out.println("done"); src = "C:/Users/1409035/Desktop/上新版本計畫/eInvoice/"; des = "C:/Users/1409035/Desktop/FTP_server_backup/candelete/"; copyAllFolder(new File(src), new File(des)); copyAllFolderRecursive(new File(src), new File(des)); System.out.println("copy all folder"); } public static void copyAllFolderRecursive(File src, File dest) { if (src.isDirectory()) { // if directory not exists, create it if (!dest.exists()) { dest.mkdir(); System.out.println("Directory copied from " + src + " to " + dest); } // list all the directory contents String files[] = src.list(); for (String file : files) { // construct the src and dest file structure File srcFile = new File(src, file); File destFile = new File(dest, file); // recursive copy copyAllFolderRecursive(srcFile, destFile); } } else { copyFileUsingApacheCommonsIO(src.getAbsoluteFile(), dest.getAbsoluteFile()); System.out.println("File copied from " + src + " to " + dest); } } private static void copyAllFolder(File source, File dest){ try { FileUtils.copyDirectory(source, dest); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * cover destination file ,although destination file is exist */ private static void copyFileUsingApacheCommonsIO(File source, File dest) { try { FileUtils.copyFile(source, dest); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private static void copyFileUsingFileStreams(File source, File dest) { 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); } input.close(); output.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { } } /* * this one is fastest */ private static void copyFileUsingFileChannels(File source, File dest) { FileChannel inputChannel = null; FileChannel outputChannel = null; try { inputChannel = new FileInputStream(source).getChannel(); outputChannel = new FileOutputStream(dest).getChannel(); outputChannel.transferFrom(inputChannel, 0, inputChannel.size()); inputChannel.close(); outputChannel.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { } } private static void copyFileUsingJava7Files(File source, File dest) { try { Files.copy(source.toPath(), dest.toPath()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
廣告
2015年3月11日 星期三
[java ] 4 way to copy file & 2 way to copy folder
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言