English 中文(简体)
我如何检查 Java是否有档案?
原标题:How do I check if a file exists in Java?

在开放档案供阅读之前,我如何检查是否有档案。 (相当于) 缩略语

The only similar question on SO address the file and was addressed using FileWriter which is clear not applicable here.

如果我可能更喜欢一个真正的API,则要求归还真实/数字,而不是一些“Call API,在提交一个例外时打开档案和渔获量”,但我可以与后者住在一起。

最佳回答

Using java.io。 文件:

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { 
    // do something
}
问题回答

我建议使用<代码>isFile(,而不是exists()。 多数时候,你们都想检查一下,这些途径是否把档案放在了,而不只是档案存在。 如果您的行程点到名录上,将重新命名<代码>exists()。

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

<代码>新文档:/>.exists(>)将回复到实情,但不会允许您作为档案予以公开和阅读。

在Java SE 7,使用Nio

import java.nio.file.*;

Path path = Paths.get(filePathString);

if (Files.exists(path)) {
  // file exist
}

if (Files.notExists(path)) {
  // file is not exist
}

如果exists and notExists Return false,则不能核实档案的存在。 (可能无法利用这条道路)

如果<代码>path是名录或普通文档,你可以核对。

if (Files.isDirectory(path)) {
  // path is directory
}

if (Files.isRegularFile(path)) {
  // path is regular file
}

请查看Java SE 7 tutorial

利用 Java8:

if(Files.exists(Paths.get(filePathString))) { 
    // do something
}
File f = new File(filePathString); 

这不会产生身体档案。 只会制造阶级档案的物体。 a. 实际制作文件。

f.createNewFile();

因此,f.exists(>>>可用来检查是否存在此类档案。

f.isFile() && f.canRead()

实现这一目标有多种途径。

  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. Java7行。

    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
    

页: 1 仅捕获<代码> 文件编号:。 档案系统必须检验档案是否存在。 这样做是两倍的,有几个原因,例如:

  • double the code
  • the timing window problem whereby the file might exist when you test but not when you open, or vice versa, and
  • the fact that, as the existence of this question shows, you might make the wrong test and get the wrong answer.

Don t试图对该系统进行二调。 它知道。 不要试图预测未来。 一般来说,能否获得 任何<><>>><>>>>>资源的最佳检验方法只是试图加以利用。

您可使用<代码>File.exists()。

先点击“有血迹”:

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 "));
    }
}

对我来说,Sean A.O. Harney所接受的答复和Cort3z由此发表的评论似乎是最佳解决办法。

使用了以下刀子:

File f = new File(filePathString);
if(f.exists() && f.isFile()) {
    //do something ...
}

希望能够帮助他人。

Don t use File constructor with String.
This may not work!
Instead of this use URI:

File f = new File(new URI("file:///"+filePathString.replace( \ ,  / )));
if(f.exists() && !f.isDirectory()) { 
    // to do
}

简单的例子包括良好的编码做法,涵盖所有案件:

 private static void fetchIndexSafely(String url) throws FileAlreadyExistsException {
        File f = new File(Constants.RFC_INDEX_LOCAL_NAME);
        if (f.exists()) {
            throw new FileAlreadyExistsException(f.getAbsolutePath());
        } else {
            try {
                URL u = new URL(url);
                FileUtils.copyURLToFile(u, f);
            } catch (MalformedURLException ex) {
                Logger.getLogger(RfcFetcher.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(RfcFetcher.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

参考资料和更多实例

https://zgrepcode.com/examples/java/java/nio/file/filealreadyexists Statelessnession-implementations

你们能够这样做。

import java.nio.file.Paths;

String file = "myfile.sss";
if(Paths.get(file).toFile().isFile()){
    //...do somethinh
}

你们必须使用档案组,建立一个档案法庭,如果存在的话,你想要检查档案。 之后,你必须保证,它是档案,而不是目录。 之后,你可以在此档案中发出反对提及你档案的方法。 知道,java的卷宗类别并不代表档案。 它实际上代表了一条 director路或一条档案道路,它所代表的抽象道路在你的计算机上并不存在。 只是一种表述,即“为什么,你可以把档案作为论点而进入,同时制造档案标,然后检查,如果这条道路上确实存在,有()方法。

如果使用春天框架,文档途径从classpath:开始。

public static boolean fileExists(String sFileName) {
    if (sFileName.startsWith("classpath:")) {
        String path = sFileName.substring("classpath:".length());
        ClassLoader cl = ClassUtils.getDefaultClassLoader();
        URL url = cl != null ? cl.getResource(path) : ClassLoader.getSystemResource(path);
        return (url != null);
    } else {
        Path path = Paths.get(sFileName);
        return Files.exists(path);
    }
}




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...