1. ホーム
  2. java

[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする

2022-02-25 08:15:29

質問

こうすれば

File f = new File("c:\\text.txt");

if (f.exists()) {
    System.out.println("File exists");
} else {
    System.out.println("File not found!");
}

すると、ファイルが作成され、常に "ファイルが存在します" を返します。ファイルが存在するかどうかを、ファイルを作成せずに確認することは可能ですか?

EDITです。

書き忘れましたが、forループの中です。というわけで、本番はこちら。

for (int i = 0; i < 10; i++) {
    File file = new File("c:\\text" + i + ".txt");
    System.out.println("New file created: " + file.getPath());
}

解決方法は?

をインスタンス化すると File のようなメソッドを呼び出すことができるオブジェクトを構築しているに過ぎません。 exists() .

それでいいし、安いし、このインスタンス化を避けようとするのはやめましょう。

は、その File インスタンスには2つのフィールドしかありません。

private String path;
private transient int prefixLength;

そして、これがコンストラクタです。

public File(String pathname) {
    if (pathname == null) {
        throw new NullPointerException();
    }
    this.path = fs.normalize(pathname);
    this.prefixLength = fs.prefixLength(this.path);
}

ご覧の通り File インスタンスは、パスのカプセル化に過ぎません。を呼び出すためにそれを作成します。 exists() が正しい進め方です。最適化で片付けようとしないでください。