欢迎光临散文网 会员登陆 & 注册

对 Java 文件操作的底层研究

2023-03-16 18:21 作者:昭裳卿  | 我要投稿

类 java.io.File 用于文件操作。每当调用其相关方法时都有可感知的延迟,是什么导致

执行的低效?是道德的毁灭还是屎山的再现?

拿 File.createNewFile() 方法举例。

java.io.File.createNewFile() 源代码

根据 JDK 19 源代码,其封装了:

java.nio.FileSystem.createNewFileExclusively(String path) 

接口,执行前还有安全检查,对应的类为 

java.security.SecurityManager

,其用于检查、防止恶意代码的执行。


fs 变量是 FileSystem 的实例

java.nio.FileSystem.getFileSystem() 源代码

getFileSystem() 方法在 java.io.DefaultFileSystem 中实现:

java.io.DefaultFileSystem 的源代码

如果是 Windows 系统,则调用 java.io.WinNTFileSystem,如果是 Linux 和 MacOS,则是 UnixFileSystem,这些类就是 File.createNewFile() 方法最终实现的地方,如下:

XXXFileSystem 源代码

native 关键字揭示最终实现都是用 C/C++。

综上,一步步的封装是拖延 Java 执行速度的原因,也是面向对象编程的缺点。

对 Java 文件操作的底层研究的评论 (共 条)

分享到微博请遵守国家法律