集册 Java实例教程 清除目录而不删除它。

清除目录而不删除它。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

436
清除目录而不删除它。

/*

 * Licensed to the Apache Software Foundation (ASF) under one or more

 * contributor license agreements.  See the NOTICE file distributed with

 * this work for additional information regarding copyright ownership.

 * The ASF licenses this file to You under the Apache License, Version 2.0

 * (the "License"); you may not use this file except in compliance with

 * the License.  You may obtain a copy of the License at

 * 

 *      http://www.apache.org/licenses/LICENSE-2.0

 * 

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

//package com.nowjava;


import java.io.File;/*来自 N o w  J a v a  .   c o m*/


import java.io.FileNotFoundException;


import java.io.IOException;


public class Main {

    public static void main(String[] argv) throws Exception {

        File directory = new File("Main.java");

        cleanDirectory(directory);/**from 时 代 J a v a 公 众 号**/

    }


    /**

     * Cleans a directory without deleting it.

     *

     * @param directory directory to clean

     * @throws IOException in case cleaning is unsuccessful

     */

    private static void cleanDirectory(File directory) throws IOException {

        if (!directory.exists()) {

            String message = directory + " does not exist";

            throw new IllegalArgumentException(message);

        }


        if (!directory.isDirectory()) {

            String message = directory + " is not a directory";

            throw new IllegalArgumentException(message);

        }


        File[] files = directory.listFiles();

        if (files == null) { // null if security restricted

            throw new IOException("Failed to list contents of " + directory);

        }


        IOException exception = null;

        for (File file : files) {

            try {

                forceDelete(file);

            } catch (IOException ioe) {

                exception = ioe;

            }

        }


        if (null != exception) {

            throw exception;

        }

    }


    /**

     * Deletes a file. If file is a directory, delete it and all sub-directories.

     * <p>

     * The difference between File.delete() and this method are:

     * <ul>

     * <li>A directory to be deleted does not have to be empty.</li>

     * <li>You get exceptions when a file or directory cannot be deleted.

     *      (java.io.File methods returns a boolean)</li>

     * </ul>

     *

     * @param file  file or directory to delete, must not be <code>null</code>

     * @throws NullPointerException if the directory is <code>null</code>

     * @throws FileNotFoundException if the file was not found

     * @throws IOException in case deletion is unsuccessful

     */

    public static void forceDelete(File file) throws IOException {

        if (file.isDirectory()) {

            deleteDirectory(file);

        } else {

            boolean filePresent = file.exists();

            if (!file.delete()) {

                if (!filePresent) {

                    throw new FileNotFoundException("File does not exist: "

                            + file);

                }

                String message = "Unable to delete file: " + file;

                throw new IOException(mess
展开阅读全文