【问题标题】:Path for all users所有用户的路径
【发布时间】:2021-04-19 06:50:34
【问题描述】:

我正在使用 Java11 在 Eclipse 中开发应用程序。我已经创建了一个路径,但是这个路径是特定于我的系统的。

file://D:/my_proj/darp/src/test/resources/rmtrep

我想要一个通用路径,以便在不更改此变量的情况下让项目也可以在其他计算机上运行。

此处使用包含路径的字符串,如下所示:

public void my_file(String string) {
        myFile = URI.create(string);
    }

我想要做的是使用这样的文件路径:

file://darp/src/test/resources/rmtrep

并在函数 my_file 中使用字符串以获得完整路径的结果,如下所示:file://D:/my_proj/darp/src/test/resources/rmtrep 任何想法?谢谢!

【问题讨论】:

  • 基于路径,你拥有的不是文件而是资源。从概念上讲,两者是不同的(即使资源有时是底层文件)。使用 API 访问资源(例如Class#getResource(String)Class#getResourceAsStream(String) 等)。
  • 谢谢,但这并不能真正解决我的任务,如果我使用“file://”,路径将无法使用
  • 当然不是。但是,如果您拥有的是资源,那么file:// 无论如何都是错误的。阅读我提到的 API 文档,了解参数使用的语法。
  • 顺便说一句,如果您需要的是URI,那么您可以简单地使用getResource(...).toURI()。当资源是文件时,您将获得一个file:// URI。当资源打包在 JAR 中时,您将获得一个 jar:file// URI。
  • 但是“rmtrep”是一个文件夹,当我尝试使用它时出现空指针异常。字符串不为 null,但 getResource(string) 返回 null

标签: java eclipse path


【解决方案1】:

https://docs.oracle.com/javase/tutorial/essential/io/pathOps.html

使用相对路径,假设您的项目的根目录是 my_proj:

File file = new File("/darp/src/test/resources/rmtrep");

【讨论】:

  • 路径不适用于前面的“file://”,我无法摆脱它。谢谢你的回答
猜你喜欢
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多