Java中的父目录

Java中的父目录,java,file,directory,Java,File,Directory,请解释一下,为什么当我运行这段代码时,一切都很好,我得到了我的类的父目录: URL dirUrl = PathsService.class.getResource(".."); 当我运行此代码时: URL dirUrl = PathsService.class.getResource("../.."); 我在dirUrl中得到null 我试着这样: URL-dirUrl=PathsService.class.getResource(“../”)尽管如此,我在dirUrl中有一个null 我怎

请解释一下,为什么当我运行这段代码时,一切都很好,我得到了我的类的父目录:

URL dirUrl = PathsService.class.getResource("..");
当我运行此代码时:

URL dirUrl = PathsService.class.getResource("../..");
我在dirUrl中得到null

我试着这样:
URL-dirUrl=PathsService.class.getResource(“../”)尽管如此,我在dirUrl中有一个null


我怎样才能得到父母/父母/父母。。。Java中的目录?

注意:

  • 正如其他人已经指出的那样,基于对某个父目录的检索的任何功能都是一个非常糟糕的设计思想(而且几乎肯定会失败)
  • 如果你分享更多关于你想要达到的目标(大局)的细节,有人可能会提出更好的解决方案
  • 也就是说,您可以尝试以下代码:

    import java.nio.file.*;
    ...
    Path path = Paths.get(PathsService.class.getResource(".").toURI());
    System.out.println(path.getParent());               // <-- Parent directory
    System.out.println(path.getParent().getParent());   // <-- Parent of parent directory
    
    导入java.nio.file.*; ... Path Path=Path.get(PathsService.class.getResource(“.”.toURI());
    System.out.println(path.getParent());// 你得到的结果完全正确

    我认为您误解了
    class.getResource
    的用法

    假设您在这个包中有包
    com.test
    MyClass

    这个
    MyClass.class.getResource(“.”)将为您提供执行文件的位置。表示
    MyClass
    的位置

    这个
    MyClass.class.getResource(“…”)
    将在包结构中提升一级。因此,这将返回目录
    test
    的位置

    这个
    MyClass.class.getResource(“../”)
    将进一步提升1级。因此,这将返回目录
    com
    的位置

    现在,这个
    MyClass.class.getResource(“../../..”)
    将尝试进一步提升1级,但由于不存在包目录,因此将返回null


    因此,
    class.getResource
    将不会超出定义的包结构并开始访问您的计算机目录。这就是它不起作用的原因。这只在您当前的包结构中进行搜索。

    您的目录结构是什么?@ExpertSystem C:\work\VCNGStruct\Flex\JavaSVGserver\out\production\JavaSVGserver\intetech。在intetech中,我有我的.class文件。您的.class文件包是什么?如何运行它?@ExpertSystem我的软件包名为intetech。我是根据想法来做的。我见过@AndrewThompson,总是抱怨!!如果我的文件在我的父目录中,请告诉我如何加载我的文件(如果我所做的是糟糕的设计思想)。你说的“加载我的文件”到底是什么意思?什么样的文件?为什么需要手动加载它们?(在这个上下文中“load”是什么意思?)我需要解析“parent-parent”目录中的xml文件我想我说“load”时表达错误,最好是“get”1。如果您的类位于包
    foo/bar
    (唉
    foo/bar/YourClass.class
    )中,您可以访问此子树中的所有资源,例如:例如
    foo/res/demo.xml
    可以使用
    YourClass.class.getResource(“/foo/res/demo.xml”);
    …(../res/demo.xml)访问;
    。如果您的资源不在包的子树中,而是在相对于系统根目录的特定路径上,您可以使用绝对路径(例如
    /home/me/resources/demo.xml
    )直接访问它们。感谢您的回答。我能够使用
    MyClass.getClass()成功地找到
    MyClass
    的位置.getResource(“.”
    在eclipse中运行应用程序时。但是,当我部署应用程序并运行jar文件时,
    getResource(“.”
    返回null。您知道对此的修复方法吗?是否有任何错误?