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上运行它,由于那里的地址不同,它不起作用......

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

4

4 回答 4

9

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

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
File file = new File(res.toURI());
String fileName = file.getPath();
于 2014-09-19T08:23:22.460 回答
4

只要 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);
于 2013-07-05T13:30:11.220 回答
2

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

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
String path = Paths.get(res.toURI()).toString();
于 2020-03-27T17:00:57.623 回答
0

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

像这样的东西:

路径2=路径2[1:];

于 2013-07-05T13:21:47.363 回答