当前位置: 首页 > 面试题库 >

为什么user.dir系统属性在Java中起作用?

钱黎明
2023-03-14
问题内容

我读过的几乎每篇文章都告诉我,Java中没有 chdir
。这个问题的公认答案是您不能用Java做到这一点。

但是,这是我尝试过的一些方法:

geo @ codebox:〜$ java -version
Java版本“ 1.6.0_14”
Java(TM)SE运行时环境(内部版本1.6.0_14-b08)
Java HotSpot(TM)客户端VM(内部版本14.0-b16,混合模式,共享)

这是我正在使用的测试课程:

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 /。
/媒体/。

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


问题答案:

仅仅因为new File(".")给出期望的答案并不意味着它正在做您想要的事情。

例如,尝试:

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

那到底在哪里?在我的Windows机器上,即使new File(".").getAbsolutePath()基于来回移动user.dirfoo.txt也总是在原始工作目录中创建。这让我感到设定user.dir,使得new File(".") 参考当前的工作目录是自找麻烦。



 类似资料:
  • 问题内容: 我正在运行一个具有以下目录结构的简单Java程序: 在Hello.java中,我正在打印“ user.dir”系统属性的值。 我班的已编译文件将存储在文件夹中。 当我从Eclipse运行此类时(右键单击源文件,然后单击Run As-> Java Application),它将打印路径到“ MyProject”文件夹,即在控制台窗口中。 然后,我使用命令窗口运行相同的程序。这是我在窗口上

  • 问题内容: 我想使用作为我的单元测试的基本目录(创建很多文件)。此属性指向当前工作目录是否正确(例如,由“ cd”命令设置)? 问题答案: 这java是运行JVM的目录。不必位于用户的主目录中。它可以在用户有权运行Java的任何地方。 因此,如果你cd进入,然后运行你的程序,将是。 另一个属性指向用户目录。如或或。

  • 我想使用dir作为单元测试(创建大量文件)的基本dir。此属性指向当前工作目录(例如,由'cd'命令设置)是否正确?

  • 我试图在服务器上的web应用程序中读取一个本地文件。在JBoss部署之外测试时,文件路径是正确的。然而,当我将它部署到JBoss时,文件路径改变了JBoss的< code>bin目录。当< code>user.dir系统属性被部署为war时,它会发生变化。 我如何在不使用绝对文件路径的情况下防止这种情况? 我想避免绝对文件路径,因为项目需要在具有不同目录结构的多台机器上复制。

  • 问题内容: 我知道星号在CSS选择器中有什么作用(星号有什么作用?,但是在属性名称中它有什么作用?这是YUI使用的CSS的示例。我不知道该怎么办。 问题答案: 这是语法错误。因此,在CSS中,它会使属性名称无效并停止对其进行解析。 由于浏览器中的错误,有时会忽略它。这有效地导致该属性仅适用于具有该特定错误IE7的浏览器。 通常,应避免使用条件注释。

  • 我试图从系统属性中读取日志配置中的变量,但没有成功。我定义了一个非常简单的logback.groovy,如下所示: 然后是一个简单的test.scala: 注意,当我在日志文件中定义USER_HOME时,它工作得很好