/*
 * @(#)erase.java
 *
 * RID-X : erase
 * ファイルまたはディレクトリを削除する
 *
 * @author  Intelligent Technology Inc.
 * @version 1.01 2002/02/14
 *
 * Copyright 2001 Nomura Research Institute, LTD. All rights reserved.
 */

package jp.co.nri.rid.snapshot;

import java.io.*;
import java.util.*;
import java.text.*;
import java.net.URL;
import java.util.Random;


/**
 * ファイルまたはディレクトリを削除する
 */
public class erase {


/**
  * コンストラクタ
  *
  */
    public erase() {}

/**
  * 指定されてディレクトリの内容を削除する（サブディレクトリも）
  *
  * @param  String      directory       ディレクトリ名
  *
  * @return boolean     true(成功) / false (失敗)
  */
    public boolean directory(String directory) throws Exception {

        boolean ret = false;
        File erase_file = new File(directory);

        // ディレクトリの有無
        ret = erase_file.exists();
        if (ret){
            // ファイルおよびディレクトリのリストを取得
            String[] erase_lst =  erase_file.list();

            //ファイルまたはサブディレクトリを削除
            for (int n = 0; n < erase_lst.length; n++) {
                ret = erasure(directory + File.separator + erase_lst[n]);
            }
        }
        return ret;
    }


/**
  * erasure
  *   ファイル（ディレクトリ）を削除する
  *   但し、ディレクトリはファイルが存在する場合は削除できない
  *
  * @param  String      file_name       ファイル名（ディレクトリ名）
  *
  * @return boolean     true(成功) / false (失敗)
  */
    public boolean erasure(String file_name) throws Exception {

        boolean ret = false;

        File erase_file = new File(file_name);

        //存在確認
        ret = erase_file.exists();
        if (ret) {
            // ディレクトリの場合
            if (erase_file.isDirectory()) {
                ret = directory(file_name);
            }
            // 削除
            if (ret) {
                ret = erase_file.delete();
            }
        }
        return ret;
    }

}