LoginSignup
0
0

More than 5 years have passed since last update.

java.io.Fileのexists()とカレントパス

Last updated at Posted at 2017-08-12

FileWriterのデフォルトコンストラクタなど、ファイルを自動で作成してくれる処理を行う時、先にファイルが存在していると上書きをしてしまう危険性がある。
ということで、java.io.Fileのexists()を使うことにした。

で、最初に思いついたのが

めんどうな例
 public static void main(String[] args){
  /**
  args[0] = FileWriterのデフォルトコンストラクタで作成して
        書き込む予定のファイル名(拡張子なし);
  */

  String filename = args[0] + ".txt";

  // カレントパスの取得とインスタンスの作成
  String path = System.getProperty("user.dir");
  File file = new File(path + "\\" + filename);

  // exists()による判定
  boolean flag = file.exists();
  if (flag) {
   System.out.println(filename + "は存在します。");

みたいにしなければいけないものと思っていた。
というのも、exists()の使い方を調べるとき、きっちりカレントパスを書いた例が多かったからである。そしてそれは、多分正しい。

だが、そもそもコマンドラインへの入力(args[0])の内容に依存するためはじめからファイル名を含んだカレントパスが用意できない上に、FileWriterでファイルを作成する前の下準備として、カレントディレクトリ内だけをチェックすれば良い場合、実は

すっきりした例
 public static void main(String[] args){
  String filename = args[0] + ".txt";

  // インスタンスの作成
  File file = new File(filename);

  // exists()による判定(以下同じ)
  boolean flag = file.exists();
  if (flag) {
   System.out.println(filename + "は存在します。");

これだけで十分だったのである。

というわけで、カレントパス + 探しているファイル名をexists()で検索するときは、Fileのコンストラクタにフルパスを入れなくとも、ファイル名だけ入れれば動く

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0