2015-03-25 31 views
0

createNewFile():createNewFile如何在內部工作?

原子地創建由此抽象路徑名 命名當且僅當這個名稱的文件尚不存在的新的空文件。 檢查文件是否存在,如果文件不存在 ,則創建該文件是一個操作,該操作對於可能影響該文件的所有其他 文件系統活動是原子的。

它如何知道文件是否可以創建?它依賴於主機平臺嗎?

+1

顯然主機所使用(因爲原子的)平臺API。 – 2015-03-25 09:55:47

+2

2015年,你不想使用它;使用java.nio.file和'Files.createFile()'。至少它會拋出一個有意義的異常,如果它失敗了,不像'File'的'.createNewFile()'。 – fge 2015-03-25 10:03:22

回答

2

您可以查看OpenJDK存儲庫。你在找什麼是this。通過研究,你可以發現,這種方法調用FileSystem.createFileExclusively(java.lang.String),其中FileSystem是一個抽象類,具體實例是通過FileSystem.getFileSystem()獲得的,這是本地方法,特定於不同的平臺。

EDIT實施例爲Win32文件系統是here

+0

在OpenJDK存儲庫中是否也實現了本地方法? – Bionix1441 2015-03-25 11:21:38

+1

@ Bionix1441當然,看看這裏http://stackoverflow.com/questions/12594046/java-native-method-source-code – nikis 2015-03-25 11:29:36

+1

@ Bionix1441我已經編輯並添加了一個鏈接到源文件 – nikis 2015-03-25 11:50:29