簡體   English   中英

創建File對象會創建物理文件還是會觸摸JVM之外的任何內容?

[英]Does creating a File object create a physical file or touch anything outside the JVM?

Java類File具有4個構造函數:

  • File(File parent, String child)
    從父抽象路徑名和子路徑名字符串創建一個新的File實例。

  • File(String pathname)
    通過將給定的路徑名​​字符串轉換為抽象路徑名來創建新的File實例。

  • File(String parent, String child)
    根據父路徑名字符串和子路徑名字符串創建一個新的File實例。

  • File(URI uri)通過將給定文件URI轉換為抽象路徑名來創建新的File實例。

當我做:

File f=new File("myfile.txt");

是否創建磁盤上的物理文件? 還是JVM調用了OS,還是僅在JVM內部創建了一個對象?

不,創建一個新的File對象創建文件系統上的文件。 特別是,您可以創建引用不存在的路徑(甚至Windows中的驅動器)的File對象。

構造函數確實要求底層文件系統表示形式執行某種規范化操作,但這並不要求文件存在。 作為規范化的示例,請考慮在Windows上運行的以下代碼:

File f = new File("c:\\a/b\\c/d.txt");
System.out.println(f);

此打印

c:\a\b\c\d.txt

顯示正斜杠已被標准化為反斜杠-但是a,b和c目錄實際上並不存在。 認為規范化更多地與操作系統命名方案有關,而不是與任何實際資源有關—我不認為它甚至可以在磁盤上查看文件是否存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM