在Ruby中,我经常使用File.dirname(__FILE__)
来打开配置文件等。对于那些不了解Ruby的人,这将给出文件系统中调用它的文件的位置。这允许我用数据库和配置文件打包库,并用相对路径打开这些文件。
Java与此等价的是什么?如果有一个数据文件,我想用jar包装,我怎样才能从jar中的Java代码中打开数据文件?
答案 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将在您的应用程序启动的同一目录中查找该文件(不一定是您的应用程序所在的目录)。