- package com.itheima;
 
  
- import java.io.File;
 
 - import java.io.FileInputStream;
 
 - import java.io.FileOutputStream;
 
 - import java.io.IOException;
 
  
- /*
 
 -  * 复制、删除、剪切、文件夹
 
 -  * 
 
 -  * File对象可以是一个已存在的文件,也可以是一个不存在的文件.
 
 -  * new 一个 File 对象只是创建一个文件对象, 不等于创建一个文件
 
 -  * 
 
 -  */
 
 - public class FFFF {
 
  
-         public static void main(String[] args) throws IOException {
 
 -                 
 
 -                 File dir = new File("123");
 
 -                 File dir2 = new File("C:\\000");                
 
 - //                copy(dir,dir2);
 
 - //                delectDir(dir);
 
 -                 cut(dir2,dir);                
 
 -         }                
 
 -         /**
 
 -          * 删除指定文件夹...:从里往外删...
 
 -          * 
 
 -          * 思路:
 
 -          *                 接收一个文件对象,判断文件是否存在
 
 -          *                 如果是文件直接删除
 
 -          *                 如果是文件夹就获取文件夹里面的文件列表
 
 -          *                 遍历文件列表,如果碰到文件夹就开始递归了
 
 -          *                 先删除里面的文件,再删除文件夹
 
 -          * 
 
 -          * @param dir         要删除的文件夹
 
 -          * @return                是否删除成功
 
 -          */
 
 -         private static boolean delectDir(File dir) {
 
  
-                 if (!dir.exists()) throw new RuntimeException("文件不存在");
 
  
-                 if (dir.isFile()) return dir.delete();                
 
  
-                 File[] files = dir.listFiles();
 
 -                 for (File file : files) {
 
 -                         if (file.isDirectory())        delectDir(file);
 
 -                         file.delete();
 
 -                 }
 
 -                 return dir.delete();
 
 -         }        
 
 -         /**
 
 -          * 复制文件夹中的所有文件,到指定的文件夹中.
 
 -          * 
 
 -          * 从外往里复制
 
 -          * 
 
 -          * 思路:
 
 -          *                 接收两个文件对象,一个是源文件夹,一个是目的地的。
 
 -          *                 获取源文件夹的所有文件列表                         
 
 -          *                 遍历文件列表,如果是文件夹,就在目的地对应的目录下创建一个同名的文件夹...
 
 -          *                 如果是文件的话,就要使用IO流复制.
 
 -          *                 
 
 -          *                 复制文件夹使用复制文件夹的方法,文件夹里面可能还有文件夹还是使用复制文件夹的方法
 
 -          *                 因为功能重复,所有可以使用递归.
 
 -          * 
 
 -          * @param oldPath   要复制的文件夹
 
 -          * @param newPath        复制到哪个文件夹        
 
 -          * @throws IOException
 
 -          */
 
 -         private static void copy(File oldPath, File newPath) throws IOException {
 
 -                                 
 
 -                 if (!oldPath.exists())
 
 -                         throw new RuntimeException("文件不存在");                
 
 -                 // 如果重名
 
 -                 if (oldPath.getAbsolutePath().equals(newPath.getAbsolutePath()))
 
 -                         newPath = new File(newPath.getAbsolutePath() + " - 副本");                
 
 -                 
 
 -                 if (!newPath.exists())        newPath.mkdir();
 
 -                 
 
 -                 if (oldPath.isFile()) {
 
 -                         copyFile(oldPath,new File(newPath, oldPath.getName())); // ↓↓↓↓↓↓
 
 -                         return;
 
 -                 }
 
 -                 
 
 -                 copyFunc(oldPath, newPath); // ↓↓↓↓↓↓
 
 -         }
 
 -         /**
 
 -          * 复制文件夹的递归方法
 
 -          * @param oldPath         要复制的文件夹
 
 -          * @param newPath        复制到哪个文件夹
 
 -          * @throws IOException
 
 -          */
 
 -         private static void copyFunc(File oldPath, File newPath) throws IOException {
 
  
-                 File[] files = oldPath.listFiles();
 
  
-                 for (File file : files) {
 
  
-                         if (file.isDirectory()) {
 
 -                                 
 
 -                                 File newDir = new File(newPath, file.getName());
 
 -                                 newDir.mkdirs();
 
 -                                 copyFunc(file, newDir);                                
 
 -                         } else {
 
 -                                 copyFile(file,new File(newPath, file.getName())); // ↓↓↓↓↓↓
 
 -                         }
 
 -                 }
 
 -         }
 
 -         /**
 
 -          * IO复制文件的方法
 
 -          * @param from         源文件
 
 -          * @param to        目的地
 
 -          * @throws IOException 
 
 -          */
 
 -         private static void copyFile(File from, File to) {
 
  
-                 FileInputStream fis = null;
 
 -                 FileOutputStream fos = null;
 
  
-                 try {
 
 -                         
 
 -                         fis = new FileInputStream(from);
 
 -                         fos = new FileOutputStream(to);
 
  
-                         byte[] buf = new byte[1024];
 
 -                         int len = 0;
 
  
-                         while ((len = fis.read(buf)) != -1) {
 
 -                                 fos.write(buf, 0, len);
 
 -                         }
 
 -                         
 
 -                 } catch (IOException e) {
 
 -                         
 
 -                         throw new RuntimeException(e);                        
 
 -                 } finally {
 
  
-                         if (fis != null)
 
 -                                 try {
 
 -                                         fis.close();
 
 -                                 } catch (IOException e) {
 
 -                                         throw new RuntimeException(e);
 
 -                                 }
 
  
-                         if (fos != null)
 
 -                                 try {
 
 -                                         fos.close();
 
 -                                 } catch (IOException e) {
 
 -                                         throw new RuntimeException(e);
 
 -                                 }
 
 -                 }
 
 -         }        
 
 -         /**
 
 -          * 剪切文件夹
 
 -          * 先复制,后删除
 
 -          * 其实应该复制一个删一个
 
 -          * @param dir
 
 -          * @param dir2
 
 -          * @throws IOException 
 
 -          */
 
 -         private static void cut(File oldPath, File newPath) throws IOException {
 
 -                 copy(oldPath, newPath);
 
 -                 delectDir(oldPath);
 
 -         }
 
 - }
 
 
  复制代码 
 
 |   
        
 
    
    
    
     
 
 |