データベースをダンプするbatファイルがあります。Java で実行したいのですが、JFileChooser を使用してそのダンプ場所を追加したいと考えています。出来ますか?
前もって感謝します
データベースをダンプするbatファイルがあります。Java で実行したいのですが、JFileChooser を使用してそのダンプ場所を追加したいと考えています。出来ますか?
前もって感謝します
はい、もちろん可能です。1 つの引数 (ダンプ パス) を取るようにバッチを記述します。
次に、JFileChooser を使用してフォルダーの場所を選択し、Java アプリでバッチ ファイルを実行します。次のコードは、2 つのボタンを持つフレームを作成します。1 つはディレクトリを選択し、絶対パスをコマンド文字列に連結するボタンで、もう 1 つはバッチを実行するボタンです。
public class DBDumpExec {
private static final String batchCMD = "myBatch.bat";
public static String directoryChosen = "";
public static void main(String[] args) {
final JFrame frame = new JFrame("DB Dump Executor");
frame.setSize(450, 150);
Container content = frame.getContentPane();
content.setLayout(new GridLayout(3, 1, 5, 5));
// Display directory label
final JLabel directoryLabel = new JLabel();
// Button to open Dialog
JButton openDialogButton = new JButton("Open Dialog");
openDialogButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Select target dump directory");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
File myFile;
int returnVal = chooser.showOpenDialog(frame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
myFile = chooser.getSelectedFile();
directoryChosen = myFile.getAbsolutePath();
directoryLabel.setText(directoryChosen + " chosen!");
System.out.println(myFile.getAbsolutePath());
}
}
});
// Click this button to run the batch
JButton executorButton = new JButton("Execute DB");
executorButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
// Run batch
try {
Process process = Runtime.getRuntime().exec(
batchCMD + " " + directoryChosen);
} catch (IOException e) {
e.printStackTrace();
}
}
});
content.add(openDialogButton);
content.add(directoryLabel);
content.add(executorButton);
frame.setVisible(true);
}
}
Runtime Javadocからコマンドを実行する方法の詳細を参照してください。