927

Javaで読み取るためにファイルを開く前に、ファイルが存在するかどうかを確認するにはどうすればよいですか( Perl の に相当-e $filename)。

SO に関する唯一の同様の質問は、ファイルの書き込みを扱っているため、FileWriterここでは明らかに適用されないものを使用して回答されました。

可能であれば、「APIを呼び出してファイルを開き、テキストに「ファイルがありません」をチェックする例外がスローされたときにキャッチする」とは対照的に、true / falseを返す実際のAPI呼び出しを好みますが、私は一緒に暮らすことができます後者。

4

17 に答える 17

1451

使用java.io.File:

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { 
    // do something
}
于 2009-11-29T20:35:03.350 に答える
472

isFile()の代わりに使用することをお勧めしexists()ます。ほとんどの場合、ファイルが存在するだけでなく、パスがファイルを指しているかどうかを確認する必要があります。exists()パスがディレクトリを指している場合は true を返すことに注意してください。

new File("path/to/file.txt").isFile();

new File("C:/").exists()true を返しますが、ファイルとして開いて読み取ることはできません。

于 2009-11-29T20:42:48.983 に答える
51

Java 8 の使用:

if(Files.exists(Paths.get(filePathString))) { 
    // do something
}
于 2016-06-01T13:33:32.577 に答える
29
File f = new File(filePathString); 

これは物理ファイルを作成しません。クラス File のオブジェクトを作成するだけです。ファイルを物理的に作成するには、明示的に作成する必要があります。

f.createNewFile();

そのf.exists()ため、そのようなファイルが存在するかどうかを確認するために使用できます。

于 2013-05-28T10:46:42.047 に答える
28
f.isFile() && f.canRead()
于 2009-11-30T15:03:09.373 に答える
20

これを実現するには、複数の方法があります。

  1. 存在のみの場合。ファイルまたはディレクトリの可能性があります。

    new File("/path/to/file").exists();
    
  2. ファイルをチェック

    File f = new File("/path/to/file"); 
      if(f.exists() && f.isFile()) {}
    
  3. ディレクトリを確認します。

    File f = new File("/path/to/file"); 
      if(f.exists() && f.isDirectory()) {}
    
  4. Java 7 の方法。

    Path path = Paths.get("/path/to/file");
    Files.exists(path)  // Existence 
    Files.isDirectory(path)  // is Directory
    Files.isRegularFile(path)  // Regular file 
    Files.isSymbolicLink(path)  // Symbolic Link
    
于 2016-08-31T18:07:03.970 に答える
15

以下を使用できます。File.exists()

于 2009-11-29T20:35:51.740 に答える
15

Google での「Java ファイルが存在します」の最初のヒット:

import java.io.*;

public class FileTest {
    public static void main(String args[]) {
        File f = new File(args[0]);
        System.out.println(f + (f.exists()? " is found " : " is missing "));
    }
}
于 2009-11-29T20:36:55.703 に答える
4

また、Commons FileUtils に慣れる価値があります 。多くの場合、JDK よりも優れています。

于 2009-11-29T20:39:27.270 に答える