java - 为什么 user.dir 系统属性在 Java 中有效?

标签 java filesystems chdir

我读过的几乎每篇文章都告诉我,在 Java 中不能有 chdirthis question 的公认答案说你不能用 Java 做到这一点。

但是,这是我尝试过的一些东西:

geo@codebox:~$ java -version
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing)

Here's a test class I'm using:

import java.io.*;

public class Ch {
    public static void main(String[] args) {
        System.out.println(new File(".").getAbsolutePath());
        System.setProperty("user.dir","/media");
        System.out.println(new File(".").getAbsolutePath());
    }
}
geo@codebox:~$ pwd
/home/geo
geo@codebox:~$ java Ch
/home/geo/.
/media/.

请解释为什么这样做有效。我可以从现在开始使用它并期望它在所有平台上以相同的方式工作吗?

最佳答案

仅仅因为 new File(".") 给出了所需的答案并不意味着它正在按照您的意愿行事。

例如,尝试:

new FileOutputStream("foo.txt").close();

那最终会在哪里?在我的 Windows 机器上,即使 new File(".").getAbsolutePath() 根据 user.dirfoo.txt 移动始终在原始工作目录中创建。让我印象深刻的是,设置 user.dir 使得 new File(".") 引用当前工作目录只是在询问麻烦了。

关于java - 为什么 user.dir 系统属性在 Java 中有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1234795/

相关文章:

linux - ext3cow 还在开发中吗?

python - 描述此 python windows os.chdir 行为的文档?

java - 从 Java 方法返回多个变量

Java:VTD-XML 2.10:如何:在不知道 namespace 的情况下获取属性 val?

java - 我的程序似乎效率低下

python - 如何检查一个目录是否是另一个目录的子目录

operating-system - 文件修改时间和文件更改时间有什么区别?

c - 函数 chdir() 表现异常

在 C 中更改工作目录?

java - Hibernate Annotations - id 设置不正确