我不认为这是可能的,这是以一种很好的,100%定义的方式来实现的。 Java实际上试图通过类路径机制将你从文件系统中抽象出来。
不过,您通常可以通过类加载器获取文件路径。第一步是获取一个类加载器的引用,该类可以找到您感兴趣的任何资源(通常,您自己的任何类的类加载器都可以正常工作;如果您有更复杂的场景,则希望知道使用哪个类加载器) 。
那么你可以要求类加载器为给定的资源作为URL的位置,例如:
final ClassLoader loader = getClass().getClassLoader();
final URL resourceLocation = loader.getResource("com/mycomp/coolapp/checkthis.doc");
现在,如果你幸运的话,URL会使用file:/
协议,将描述一个在本地文件系统上的位置。如果是这样,您可以提取此路径并将其用作您刚刚查找的任何类路径资源的文件系统位置。如果它不是file:/
资源,则该类甚至可能不存在于本地计算机上(例如,它正通过RMI远程加载),所以无论如何你都运气不佳。
如果这听起来很复杂 - 也许可以从Java启动脚本(例如java ... -Dworking.dir=$(pwd)
)作为系统属性传入工作目录。
你想要当前目录还是类的包?文件系统的位置取决于它是否在jar文件中,以及类路径指向的位置。 – 2010-11-12 16:37:33
我想要在文件系统中的位置,类Word不在一个罐子里。我不知道如何使用类路径来获取它。 – Federico 2010-11-12 16:39:55