程序思路:
- 創建目標目錄
- 將文件目錄下的子文件和子目錄遍歷
- 如果是子文件,通過創建IO流直接復制,如果是子目錄,遍歷子目錄使用遞歸方法復制
使用方法:
- boolean mkdir()//創建文件夾
- File[] listFiles()//返回指定文件目錄下的一級子文件和子目錄的文件類數組
- boolean isFile()//判斷是否含子文件
- boolean isDirectory()//判斷是否含子目錄
- String getName()//返回文件名字符串
- String getPath()//返回文件路徑
1 public class ioFile { 2 public static void main(String[] args) { 3 File file1 = new File("D:/exercise"); 4 File file2 = new File("C:/"+file1.getName()); 5 file2.mkdir(); 6 fileCopy(file1,file2); 7 } 8 public static void fileCopy(File file1,File file2){ 9 File[] files1 = file1.listFiles(); 10 for (int i = 0; i < files1.length; i++) { 11 if (files1[i].isDirectory()){ 12 String s = files1[i].getName(); 13 File file = new File(file2.getPath()+"/"+s); 14 file.mkdir(); 15 fileCopy(files1[i],file); 16 }else if (files1[i].isFile()){ 17 String s = files1[i].getName(); 18 BufferedReader br = null; 19 BufferedWriter bw = null; 20 try { 21 br = new BufferedReader(new InputStreamReader(new FileInputStream(files1[i].getPath()+""))); 22 bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2.getPath()+"/"+s))); 23 String t; 24 while(true){ 25 if ((t=br.readLine())!=null){ 26 bw.write(t); 27 }else{ 28 break; 29 } 30 } 31 32 } catch (Exception e) { 33 e.printStackTrace(); 34 } finally { 35 if (br!=null){ 36 try { 37 br.close(); 38 } catch (IOException e) { 39 e.printStackTrace(); 40 } 41 }if (bw!=null){ 42 try { 43 bw.close(); 44 } catch (IOException e) { 45 e.printStackTrace(); 46 } 47 } 48 } 49 } 50 } 51 } 52 }