【问题标题】:How to get rid of the starting slash in URI or URL?如何摆脱 URI 或 URL 中的起始斜杠?
【发布时间】:2013-07-03 14:46:10
【问题描述】:

我正在使用

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
String path = res.getPath();
String path2 = path.substring(1);

因为getPath()方法的输出是这样返回的:

 /C:/Users/......

我需要这个

 C:/Users....

我真的需要下面的地址,因为某些外部库拒绝在开头使用斜杠或在开头使用 file:/ 或其他任何内容。

我几乎尝试了 URL 中的所有方法,例如 toString() toExternalPath() 等,并对 URI 做了同样的事情,但没有一个像我需要的那样返回它。 (我完全不明白,为什么它在开头保留斜线)。

只需擦除第一个字符即可在我的机器上执行此操作。但是有朋友尝试在linux上运行它,由于那里的地址不同,它不起作用......

遇到这样的问题应该怎么办?

【问题讨论】:

  • 如果路径包含“:”,则去掉第一个字符,看在上帝的份上...
  • 看在上帝的份上,如果您阅读前三行,您会看到,我已经在这样做了,但这并没有帮助,因为 - 我为什么要重复自己,只是阅读帖子.. ....
  • 你是在无条件地这样做。是否我告诉你这样做,只有当“:”存在
  • 您甚至可以进一步检查“:”,尤其是在第三位。
  • 好吧,您确实编辑了评论, : 以前不存在。然而,这样的答案已经在下面了。

标签: url path uri absolute-path


【解决方案1】:

转换为 URI,然后使用 Paths.get()

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
String path = Paths.get(res.toURI()).toString();

【讨论】:

  • Path.get 将来可能会被弃用,也许你仍然可以这样使用:String path = Path.of(res.toURI()).toString();
  • 顺便说一句,Path.of(...) 仅适用于 Java11
【解决方案2】:

将 URL 转换为 URI 并在 File 构造函数中使用它:

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
File file = new File(res.toURI());
String fileName = file.getPath();

【讨论】:

    【解决方案3】:

    只要 UNIX 路径不应该包含驱动器号,您可以试试这个:

    URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
    String path = res.getPath();
    char a_char = text.charAt(2);
    if (a_char==':') path = path.substring(1);
    

    【讨论】:

    • 谢谢,我希望不同的操作系统不会出现其他情况。
    【解决方案4】:

    一旦你得到它,你可能只是格式化字符串。

    类似这样的:

    path2=path2[1:];

    【讨论】:

    • 你读过这篇文章的前三行吗?我正在使用它 - 我不能也不想使用它,因为这种态度不适用于 Windows 机器。 + 我相信一定有比这更优雅的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多