FileDocCategorySizeDatePackage
Delete.javaAPI DocExample2482Sat Jun 02 02:40:08 BST 2001None

Delete.java

// This example is from _Java Examples in a Nutshell_. (http://www.oreilly.com)
// Copyright (c) 1997 by David Flanagan
// This example is provided WITHOUT ANY WARRANTY either expressed or implied.
// You may study, use, modify, and distribute it for non-commercial purposes.
// For any commercial use, see http://www.davidflanagan.com/javaexamples

import java.io.*;

/**
 * This class is a static method delete() and a standalone program that
 * deletes a specified file or directory.
 **/
public class Delete {
  /** 
   * This is the main() method of the standalone program.  After checking
   * it arguments, it invokes the Delete.delete() method to do the deletion
   **/
  public static void main(String[] args) {
    if (args.length != 1) {    // Check command-line arguments
      System.err.println("Usage: java Delete <file or directory>");
      System.exit(0);
    }
    // Call delete() and display any error messages it throws.
    try { delete(args[0]); }
    catch (IllegalArgumentException e) { System.err.println(e.getMessage()); }
  }     

  /**
   * The static method that does the deletion.  Invoked by main(), and designed
   * for use by other programs as well.  It first makes sure that the 
   * specified file or directory is deleteable before attempting to delete it.
   * If there is a problem, it throws an IllegalArgumentException.
   */
  public static void delete(String filename) {
    // Create a File object to represent the filename
    File f = new File(filename);
    // Make sure the file or directory exists and isn't write protected
    if (!f.exists()) fail("Delete: no such file or directory: " + filename);
    if (!f.canWrite()) fail("Delete: write protected: " + filename);
    // If it is a directory, make sure it is empty
    if (f.isDirectory()) {
      String[] files = f.list();
      if (files.length > 0) fail("Delete: directory not empty: " + filename);
    }
    // If we passed all the tests, then attempt to delete it
    boolean success = f.delete();
    // And throw an exception if it didn't work for some (unknown) reason.
    // For example, because of a bug with Java 1.1.1 on Linux, 
    // directory deletion always fails 
    if (!success) fail("Delete: deletion failed");
  }

  /** A convenience method to throw an exception */
  protected static void fail(String msg) throws IllegalArgumentException {
    throw new IllegalArgumentException(msg);
  }
}