思路:
1、獲取所有的文件夾和子文件的名稱然后遍歷
2、判斷是否是文件夾,是的話進行復制
eg:對D盤mp3文件夾內的所有文件進行復制,復制到F盤MP3文件夾。
(1)、判斷F盤下是否有mp3文件夾,沒有的話進行創建。
(2)、如果創建其他的字目錄,需要獲得他的目錄名和路徑(划重點)
3、判斷是不是文件,是的話復制(可以用遞歸)
發揮大事化小,小事化了的精神,我們分為三個部分:
1、寫一個復制子文件的方法;
2、寫一個復制文件夾的方法;
3、寫一個main函數(廢話);
eg:分開寫是為了方便理解,這個項目直接寫在main函數中比較麻煩,也不易理解,重點是:我不會、我不會、我不會。。。
直接上截圖了:(通篇可能較為啰嗦,主要是為了把問題說明清楚,也方便今后自己翻看理解此時自己考慮該問題的思路)
第1步:
寫一個復制子文件的方法; (圖片看不清? 解決辦法:1、ctrl+鼠標滑輪,放大網頁。2、把圖片復制到桌面,直接拖出去即可。 3 最底下有 ↓ ↓ ↓ 源代碼 ↓ ↓ ↓ )
第2步
寫一個復制文件夾的方法:
第3步
寫main函數:
由於筆者水平有限,理解問題的方法及思路可能不是完全的正確。
不知道你們能不能看懂,
如果沒看懂,
再看一遍。
這是字節流的,字符流和字節流的方法類似,只需改幾行代碼。會了這個,那個自然也就會了。
原來可以直接插入代碼,剛發現(⊙﹏⊙)b (一萬只羊駝奔騰而過。。)
不過源文件里面說明太多,插入到這里總是錯行,看着太亂,所以只放了個純凈版的,可以和上面的圖片對照着讀 (稍微有些麻煩)
package cn.zzsxt.Copy; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class CopyMp3 { public static void main(String[] args) { CopyMp3 test = new CopyMp3(); File source = new File("E:/mp3"); File target = new File("F:/MP3"); test.copyDir(source, target); System.out.println("復制完成!"); } public void copyFile(File source,File target){ FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(source); fos = new FileOutputStream(target); byte [] bs = new byte[1024]; int len; while((len=fis.read(bs, 0, bs.length))!=-1){ fos.write(bs, 0, len); } fos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { fos.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } } public void copyDir(File source,File target){ if(!(target.exists())){ target.mkdirs(); } File [] fs = source.listFiles(); for (File file : fs) { String fileName = file.getName(); File f = new File(target,fileName); if(file.isFile()){ copyFile(file,f); } if(file.isDirectory()){ file.mkdirs(); copyDir(file,f); } } } }