Java相当于Ruby的__FILE__?

时间:2009-06-02 23:26:29

标签: java ruby

在Ruby中,我经常使用File.dirname(__FILE__)来打开配置文件等。对于那些不了解Ruby的人,这将给出文件系统中调用它的文件的位置。这允许我用数据库和配置文件打包库,并用相对路径打开这些文件。

Java与此等价的是什么?如果有一个数据文件,我想用jar包装,我怎样才能从jar中的Java代码中打开数据文件?

4 个答案:

答案 0 :(得分:7)

Java中的等效API是getResourceAsStream。这将打开存储在JAR中的文件流,该文件相对于调用它的类。

有一些变体,例如getResource,它返回一个URL,或ClassLoader上使用JAR文件中的绝对路径的方法。

答案 1 :(得分:1)

请参阅Java Applications and the "Current Directory"

  

在Java中,您使用File对象   构造文件的相对视图   系统。两个构造函数   File对象采用'父'   指定父路径的参数   它的前缀是路径   文件本身创建完整   文件的抽象路径。你做什么   是,用路径创建一个File对象   代表您当前的目录   然后创建所有文件对象   使用该File对象作为父对象。   Voila,当前目录。

我还建议Reading and Writing a Properties File

// Read properties file.
Properties properties = new Properties();
try {
    properties.load(new FileInputStream("filename.properties"));
} catch (IOException e) {
}

// Write properties file.
try {
    properties.store(new FileOutputStream("filename.properties"), null);
} catch (IOException e) {
}

答案 2 :(得分:0)

我投票赞成@andrew,但我想指出,在Java中,文件本身的目录除了一些高度反映(并且很可能是错误的)目的外毫无意义。

它将位于基于包结构的目录中,并且可以位于jar或几乎任何位置。

Java不那么简单,允许更少的快捷方式,但通常可以提高部署时的一致性和可靠性。

答案 3 :(得分:0)

如果您只是指定文件名,JVM将在您的应用程序启动的同一目录中查找该文件(不一定是您的应用程序所在的目录)。