繁体   English   中英

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

[英]exists() does not work but getAbsolutePath() does work

我有以下代码,可根据预先创建的文件“ 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

这两种方法是关于文件的不同方面的:

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

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

如果看一下javadoc ,可以找到以下句子

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM