递归删除目录及子目录

来源:互联网 发布:贝伦赛丽40周年 知乎 编辑:程序博客网 时间:2024/05/16 08:02
 /**
     * 递归删除目录及子目录
     *
     * @param path需要被删除的目录路径
     * @param deleteInfoStr 用于保存删除信息的变量
     * @throws IOException
     */
    private static void clean(String path, StringBuilder deleteInfo)
            throws IOException
    {
        File file = new File(path);
        //如果该路径不存在
        if (!file.exists())
        {
            deleteInfo.append(path + " not exist.");
        }
        else
        {
            //如果是目录,则递归删除
            if (file.isDirectory())
            {
                String[] fileNames = file.list();
                if (null == fileNames)
                {
                    throw new IOException("IO exception while deleting files");
                }
                //如果是空目录则直接删除
                else if (fileNames.length == 0 && file.delete())
                {
                    deleteInfo.append("delete " + file.getAbsolutePath()
                            + " success.\n");
                }
                else
                {
                    for (int i = 0; i < fileNames.length; i++)
                    {
                        String fileName = fileNames[i];
                        //                        File subFile = new File(fileName);
                        clean(path + SEPARATOR + fileName, deleteInfo);
                    }
                    //最后删除父目录
                    if (file.delete())
                    {
                        deleteInfo.append("delete " + file.getAbsolutePath()
                                + " success.\n");
                    }
                }
            }
            //如果是文件,则直接删除
            else
            {
                if (file.delete())
                {
                    deleteInfo.append("delete " + file.getAbsolutePath()
                            + " success.\n");
                }
            }
        }
    }
原创粉丝点击