exist()不起作用,但getAbsolutePath()起作用

时间:2019-03-07 13:07:15

标签: java

我有以下代码,借此基于预先创建的文件“ test.brd”创建文件类型,并在此文件上调用getAbsolutePath()方法,所有这些都可以正常工作。但是,当我运行exist()方法时,这被视为不存在。

当我调试时,文件的状态为null,路径也为null,但是getAbsolutePath()方法仍然有效。我已经调试,它进入了exist()方法的“安全性”部分。

请参见以下内容:

File inputFile = new File("/Users/myname/Desktop/project_name/test.brd");
// The below works and returns the path
System.out.println(inputFile.getAbsolutePath());
if (inputFile.exists()) {
    System.out.println("Exists");
}
else {
    System.out.println("Invalid");
}

即使我在没有绝对路径的情况下构造文件,仅给出文件名作为参数(与Java文件一起本地存储),也会提供正确的绝对路径。

希望这是有道理的。我要做的就是将预先创建的文件读入Array,每个字符都是数组中的一个元素,我打算使用scanner来读取文件,但是inputFile不存在被阅读。

3 个答案:

答案 0 :(得分:2)

这两种方法涉及文件的不同方面:

  • getAbsolutePath()与文件名有关。在某种程度上,这是一种与实际文件系统完全分离的“字符串处理方法”
  • exists()与实际文件有关。它检查文件系统中文件是否位于给定路径所标识的位置。

请注意,即使在实际文件系统中没有文件或文件夹的情况下,getAbsolutePath()File的其他路径操作方法也必须有效。否则,API将无法支持文件创建,例如通过createNewFile()

答案 1 :(得分:0)

如果您看看javadoc,则会发现以下句子

  

此类的实例可能会或可能不会表示实际的文件系统对象,例如文件或目录。

证明File对象在内存中的实例不一定是文件系统中存在的真实文件或目录。

答案 2 :(得分:0)

file inputFile = new File(“ / Users / myname / Desktop / project_name / test.brd”); 上面的行不会创建新文件,因此不存在。 如果要创建文件,可以使用方法inputFile.createNewFile()。 方法getAbsolutePath()用于inputFile对象,与文件创建完全不同。