2015-03-25 28 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