File Input Output Java

/*
 * Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2006.
 *
 * Licensed under the Aduna BSD-style license.
 */
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Main {
  
  /**
   * Deletes the specified diretory and any files and directories in it
   * recursively.
   * 
   * @param dir The directory to remove.
   * @throws IOException If the directory could not be removed.
   */
  public static void deleteDir(File dir)
    throws IOException
  {
    if (!dir.isDirectory()) {
      throw new IOException("Not a directory " + dir);
    }
    
    File[] files = dir.listFiles();
    for (int i = 0; i < files.length; i++) {
      File file = files[i];
      
      if (file.isDirectory()) {
        deleteDir(file);
      }
      else {
        boolean deleted = file.delete();
        if (!deleted) {
          throw new IOException("Unable to delete file" + file);
        }
      }
    }
    
    dir.delete();
  }
}