只是想知道Java中文件删除操作的内部机制。我正在查看java.io.File
的源代码。
当我们调用delete()函数时,它实际上调用了java.io.FileSystem
的抽象delete()方法,并且基于OS(即Unix / Windows),正在执行实际删除。我正在分析java.io.UnixFileSystem
的delete()方法并找到了这个 -
public boolean delete(File f) {
// Keep canonicalization caches in sync after file deletion
// and renaming operations. Could be more clever than this
// (i.e., only remove/update affected entries) but probably
// not worth it since these entries expire after 30 seconds
// anyway.
cache.clear();
javaHomePrefixCache.clear();
return delete0(f);
}
private native boolean delete0(File f);
因此它实际执行一些缓存清除并最终调用本机delete0()方法。
我想知道删除操作实际上是怎么发生的?它是否在内部调用rm
或rm -f
命令或其他任何内容来删除文件?