簡體   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