【问题标题】:Move folders up the file path of .class file in java在java中将文件夹向上移动到.class文件的文件路径
【发布时间】:2014-03-20 20:13:53
【问题描述】:

我通过以下方式找到了我正在运行的课程的课程路径:

MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();

为此,我得到了以下路径:

\Users\vanburen\main_dev\vob2\SD\WebContent\WEB-INF\classes

我必须在以下位置读取 XML 文件:

\Users\vanburen\main_dev\vob2\SD\rulesXML\rules.XML

谁能帮助我如何向上移动三个文件夹?我试过使用

getAbsoluteFile().getParentFile()

但这似乎是多余的。有更好的方法吗?

【问题讨论】:

  • 要小心执行此操作,因为当您将应用程序部署到 Web 服务器时,该文件几乎肯定不会位于相同的相对路径(我是假设它是给定WebContent\WEB-INF 的网络应用程序)。更好的做法是将其放在WEB-INF 下的某个位置并使用ServletContext.getResource 访问它,或者将位置设置为可以为每个环境适当配置的参数(servlet 上下文初始化参数或系统属性)。

标签: java file filepath


【解决方案1】:

我不确定您为什么有getAbsoluteFile(),但getParentFile() 是迄今为止最简单和最被接受的向上导航文件夹树的方法。

【讨论】:

  • 但是如果我必须向上移动三个以上的文件夹,我必须多次使用 getParentFile(),我认为这是非常多余的。
  • 编程有时是非常多余的。我向你保证,这是最干净的方法。任何形式的树遍历很少一次跳过一个以上的节点。
【解决方案2】:

由于除了使用getParentFile() 之外,我还没有找到更好的方法来遍历文件夹,因此我已将要读取的文件添加到我的类路径中并通过

URL url = Thread.currentThread().getContextClassLoader().getResource(RULES_XML_NAME); File fXmlFile = new File(url.getPath());

并通过使用读取文件, File fXmlFile = new File(url.getPath());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多