createNewFile():createNewFile如何在內部工作?
原子地創建由此抽象路徑名 命名當且僅當這個名稱的文件尚不存在的新的空文件。 檢查文件是否存在,如果文件不存在 ,則創建該文件是一個操作,該操作對於可能影響該文件的所有其他 文件系統活動是原子的。
它如何知道文件是否可以創建?它依賴於主機平臺嗎?
createNewFile():createNewFile如何在內部工作?
原子地創建由此抽象路徑名 命名當且僅當這個名稱的文件尚不存在的新的空文件。 檢查文件是否存在,如果文件不存在 ,則創建該文件是一個操作,該操作對於可能影響該文件的所有其他 文件系統活動是原子的。
它如何知道文件是否可以創建?它依賴於主機平臺嗎?
您可以查看OpenJDK
存儲庫。你在找什麼是this。通過研究,你可以發現,這種方法調用FileSystem.createFileExclusively(java.lang.String)
,其中FileSystem
是一個抽象類,具體實例是通過FileSystem.getFileSystem()
獲得的,這是本地方法,特定於不同的平臺。
EDIT實施例爲Win32文件系統是here
在OpenJDK存儲庫中是否也實現了本地方法? – Bionix1441 2015-03-25 11:21:38
@ Bionix1441當然,看看這裏http://stackoverflow.com/questions/12594046/java-native-method-source-code – nikis 2015-03-25 11:29:36
@ Bionix1441我已經編輯並添加了一個鏈接到源文件 – nikis 2015-03-25 11:50:29
顯然主機所使用(因爲原子的)平臺API。 – 2015-03-25 09:55:47
2015年,你不想使用它;使用java.nio.file和'Files.createFile()'。至少它會拋出一個有意義的異常,如果它失敗了,不像'File'的'.createNewFile()'。 – fge 2015-03-25 10:03:22