/*
* Copyright 2004-2019 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.tools;
import java.sql.SQLException;
import java.util.ArrayList;
import org.h2.engine.Constants;
import org.h2.store.FileLister;
import org.h2.store.fs.FileUtils;
import org.h2.util.Tool;
Deletes all files belonging to a database.
The database must be closed before calling this tool.
@h2.resource
/**
* Deletes all files belonging to a database.
* <br />
* The database must be closed before calling this tool.
* @h2.resource
*/
public class DeleteDbFiles extends Tool {
Options are case sensitive. Supported options are:
[-help] or [-?]
Print the list of options
[-dir <dir>]
The directory (default: .)
[-db <database>]
The database name
[-quiet]
Do not print progress information
Params: - args – the command line arguments
@h2.resource
/**
* Options are case sensitive. Supported options are:
* <table>
* <tr><td>[-help] or [-?]</td>
* <td>Print the list of options</td></tr>
* <tr><td>[-dir <dir>]</td>
* <td>The directory (default: .)</td></tr>
* <tr><td>[-db <database>]</td>
* <td>The database name</td></tr>
* <tr><td>[-quiet]</td>
* <td>Do not print progress information</td></tr>
* </table>
* @h2.resource
*
* @param args the command line arguments
*/
public static void main(String... args) throws SQLException {
new DeleteDbFiles().runTool(args);
}
@Override
public void runTool(String... args) throws SQLException {
String dir = ".";
String db = null;
boolean quiet = false;
for (int i = 0; args != null && i < args.length; i++) {
String arg = args[i];
if (arg.equals("-dir")) {
dir = args[++i];
} else if (arg.equals("-db")) {
db = args[++i];
} else if (arg.equals("-quiet")) {
quiet = true;
} else if (arg.equals("-help") || arg.equals("-?")) {
showUsage();
return;
} else {
showUsageAndThrowUnsupportedOption(arg);
}
}
process(dir, db, quiet);
}
Deletes the database files.
Params: - dir – the directory
- db – the database name (null for all databases)
- quiet – don't print progress information
/**
* Deletes the database files.
*
* @param dir the directory
* @param db the database name (null for all databases)
* @param quiet don't print progress information
*/
public static void execute(String dir, String db, boolean quiet) {
new DeleteDbFiles().process(dir, db, quiet);
}
Deletes the database files.
Params: - dir – the directory
- db – the database name (null for all databases)
- quiet – don't print progress information
/**
* Deletes the database files.
*
* @param dir the directory
* @param db the database name (null for all databases)
* @param quiet don't print progress information
*/
private void process(String dir, String db, boolean quiet) {
ArrayList<String> files = FileLister.getDatabaseFiles(dir, db, true);
if (files.isEmpty() && !quiet) {
printNoDatabaseFilesFound(dir, db);
}
for (String fileName : files) {
process(fileName, quiet);
if (!quiet) {
out.println("Processed: " + fileName);
}
}
}
private static void process(String fileName, boolean quiet) {
if (FileUtils.isDirectory(fileName)) {
// only delete empty directories
FileUtils.tryDelete(fileName);
} else if (quiet || fileName.endsWith(Constants.SUFFIX_TEMP_FILE) ||
fileName.endsWith(Constants.SUFFIX_TRACE_FILE)) {
FileUtils.tryDelete(fileName);
} else {
FileUtils.delete(fileName);
}
}
}