Javaでファイルを保存する際に、上書きの確認をする方法

自分自身で扱う専用のソフトを作る際は、あまり気にせず実装していませんでしたが、
色々な人に使ってもらうソフトの場合、ファイルの上書きの確認は必要だなーと思ったのでやり方メモ。

1. ファイルチューザで保存先を選択し、
2. 同じ名前のファイルが存在していた場合、
3. 「はい」「いいえ」「取消」の選択するダイアログボックスを出し、
4. 「はい」の場合は上書き保存、
5. 「いいえ」の場合は再びファイルチューザを表示、
6. 「取消」の場合はダイアログボックスを閉じる、
というプログラムにしてみます。

実際に書いたコードは次のとおり。

こんな感じで出来ました。

以下、簡単なコードの解説を記します。

1行目で、ファイルチューザ(ファイル保存ダイアログ)のインスタンス fc を生成しています。
コンストラクタ引数でファイルチューザの初期ディレクトリを指定することができ、
「System.getProperty(“user.dir”)」とすると実行ファイルのディレクトリが指定されます。

3行目で while ループに入り、4行目でファイルチューザ(ファイル保存ダイアログ)を表示させます。
「保存」ボタンではなく「取消」ボタンが押された場合、return で終了させています。

「保存」ボタンが押された場合、7行目で選択されたファイルを取得し、
8行目で exist() メソッドを用い、ファイルの存在確認を行います。

ファイルが存在していない場合は break; でループから抜け、
ファイルが存在する場合は、9~11行目で確認ダイアログボックスを出します。
JOptionPane.showConfirmDialog() メソッドの第4引数では、確認用のボタンを指定することができ、
「はい」「いいえ」「取消」の3つのボタンを表示させたい場合は、「JOptionPane.YES_NO_CANCEL_OPTION」とします。

savedialog

そして、
「はい」の場合は break;
「いいえ」の場合は continue;
「取消」の場合は return;
とすることで、冒頭の項目1.~6.を実現することができました。

あとは、ファイル f に対して書き込み処理を行うだけです。


コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">