在使用Java 1.7和Windows 7时,getResource会在磁盘名称前加上斜杠(/)。

25
以下代码在磁盘名称之前加上了前导斜杠。 我该如何避免这种情况?
String pngpath = getClass().getResource("/resources/image.png").getPath();
System.out.println("pngpath = "+pngpath);

提供:

pngpath = /C:/Users/jgrimsdale/Documents/NetBeansProjects/HelloCV/build/classes/resources/image.png

1
当您从getResource语句中删除前导斜杠时会发生什么? - nattyddubbs
1
我相信即使有前导的 /,该路径仍然有效。 - Sotirios Delimanolis
2
@SotiriosDelimanolis 在某些情况下不是这样。 - arkon
@SotiriosDelimanolis 显然不是Java NIO的getPath()方法 https://dev59.com/gWkw5IYBdhLWcg3whK48 - DLight
3个回答

36

使用:

String pngpath = getClass().getResource("/resources/image.png").getFile();
File file = new File(pngpath);
System.out.println(file.getAbsolutePath());

2

-1

你可以使用这段代码来实现这个。

System.out.println("pngpath = "+pngpath.substring(1,pngpath.length()));

4
这将导致在Linux上出现文件未找到的情况,需要保留前导斜杠。@diogosantana的答案更具跨平台性。 - s.ijpma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接