我试图弄清楚在 Java 中是如何工作的,并且在(我在 macOS 上)中找到File.renameTo()
了以下方法。UnixFileSystem.java
private native boolean rename0(File f1, File f2);
我明白(如果我错了请更正)native
意味着 JVM 调用用另一种语言编写的代码/库。那么,我在哪里/如何或是否可能看到它的实现?
我很想看看它的实现,以确认我是否可以将它用于我的以下用例。
我需要在两个(或更多)不同的服务器上运行 Java 应用程序,这些服务器轮询同一目录(共享文件系统)中的文件,并且只有一个实例(服务器)应该处理特定文件。每当任何服务器中的应用程序看到一个文件时,它都会尝试移动到其他目录,如果移动成功(由方法返回的布尔值File.renameTo()
确定),该服务器开始处理这些文件内容(准确地说是批处理) . 我用三个不同的实例对一个目录进行了快速测试(以每秒 1000 个文件的速度生成新文件),结果符合预期。我只是想确认它是否可以扩展。
请注意,我不是在移动实际文件,而是<actual-filename>.DONE
在从源文件复制完成后创建的一个名为类似名称的零字节文件。