Java的IO流實現文件和文件夾的復制
本文實例為大傢分享瞭Java的IO流實現文件和文件夾復制的具體代碼,供大傢參考,具體內容如下
1、使用文件流對單個文件進行復制
將某個文件復制到指定的路徑下:
//復制文件 public static void copy(File f1, String path) throws IOException { System.out.println("***copy***" + f1.getName()); FileInputStream in = new FileInputStream(f1); FileOutputStream out = new FileOutputStream(path + f1.getName()); byte[] bytes = new byte[512]; while ((in.read(bytes)) != -1) { out.write(bytes, 0, bytes.length); } out.close(); in.close(); }
2、使用文件流將文件及文件夾下的文件進行復制
將a文件夾下的文件拷貝到b文件夾裡。a和b文件夾可能存在相同文件,若b文件夾下已經存在a文件夾中的文件則不拷貝,若不存在則拷貝。
(1)遞歸復制文件夾下的文件
public static void copyAll(File A, File B) throws IOException { boolean flag = true; if (!B.exists()) { B.mkdir(); } String[] a=A.list(); //遍歷A中所有文件及文件夾 for (int i = 0; i < a.length; i++) { System.out.println("a:"+a[i]); //若A中含有文件夾 if (new File(A.getPath()+"/"+a[i]).isDirectory()) { File newFolder=null; if (! ( new File(B.getPath()+"/"+a[i]).exists() )) { newFolder = new File(B, a[i]); newFolder.mkdir(); //創建子文件夾 } //遞歸,判斷 copyAll(new File(A.getPath()+"/"+a[i]), newFolder); } //若A中含有文件,直接復制文件 else { copyOtherFile(new File(A.getPath()+"/"+a[i]), B); } } }
(2)若含有同名文件,則不進行復制
public static void copyOtherFile(File srcfile, File destfile) throws IOException { File[] destlist = destfile.listFiles(); boolean flag = true; flag = true; for (File f2 : destlist) { System.out.println("f:" + srcfile.getName()); System.out.println("f2:" + f2.getName()); //含有同名文件,不進行復制 if (srcfile.getName().equals(f2.getName())) { System.out.println("相同"); flag = false; break; } else { System.out.println("不相同"); } } if (flag) { copy(srcfile, destfile.getPath() + "/"); } }
(3)主函數調用
public static void main(String[] args) throws IOException { File file = new File("F:/a"); File file2 = new File("F:/b"); copyAll(file, file2); System.out.println("復制成功!!!"); }
下一篇:Java實現文件及文件夾的刪除
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- java.io.File的renameTo方法移動文件失敗的解決方案
- java面試try-with-resources問題解答
- Java深入淺出說流的使用
- Java文件操作之IO流 File類的使用詳解
- java 移動文件,並修改名稱方式