为什么chdir不支持java?

时间:2017-03-31 01:30:26

标签: java

我想知道为什么Java不提供chdir调用实现的实际原因,但它提供了相同的本机接口。

1 个答案:

答案 0 :(得分:2)

可以在Sun / Oracle的bug数据库中找到完整的评估版,其中包含问题编号 JDK-4045688 : Add chdir or equivalent notion of changing working directory

由于任何解决方案都存在重大问题,因此决定关闭该票证,并且没有报告该错误的客户真正需要它 - 所有这些客户都能够使用解决方法。

错误数据库中的一段摘录突出了添加此类调用的问题:

  

评价

     

此功能可以通过两种方式解释:chdir可以改变   包含JVM的进程的当前工作目录,导致   所有线程要同时更改,或提供更多"虚拟"   当前目录的每线程概念,在概念上可以是一个   ThreadLocal的。这只是建立起来的便利   要传递给底层操作系统API的完整路径名。

     

这是当前目录在Emacs中的工作方式 - 它只是一个   变量,但是可以具有缓冲区本地值的魔术变量。 Emacs的   在这个意义上,缓冲区有点像Java线程。这样的   实施将提供方便和安全。有每个线程   使用ThreadLocal当前目录提供程序员体验   熟悉旧的Unix greybeards,除了Threads替换   过程

此处还描述了许多变通方法,例如使用新的当前目录执行子进程,或者始终使用您希望相对部分开始的父目录限定文件访问。