我正在重写我的类,以在游戏中加载资源。我的教授告诉我们在加载资源时尽量不要在字符串/文件/URL 中使用“/”斜杠符号。我正在使用 Classname.class.getResource(someString) 来获取 URL,这样我就可以加载效果很好的资源(请参阅下面的代码)。我阅读了 class.getResource()
的 Oracle 文档,其中我必须使用 "/"
。我想知道是否有比使用 ClassName.class.getResource()
更好的加载资源(主要是图像和音频文件)的方法?我对速度或内存没有任何要求。下面是我如何加载 BufferedImage
的示例。
try {
// Example path = "/menu/background2.png"
sourceImage = ImageIO.read(ResourceManager.class.getResource(path));
} catch (IOException e) {
System.out.println("Failed to load: " + path);
e.printStackTrace();
}
最佳答案
您可以在路径中使用斜杠,但不能使用反斜杠,因为您没有使用文件路径,而不是类路径中的路径。如果您想要类的相对路径,请不要使用前导斜杠。当您使用文件路径时,您可以在路径中使用 File.separator
,但是在 URL 中您仍然可以使用斜杠。更重要的是,File.separator
在 URL 中的使用是错误的,因为它在需要转义反斜杠符号以在 URL 中使用的 Windows 系统上不起作用。
关于由于可移植性问题,Java 加载资源(图像、音频、文本文件等)而不使用 "/"符号并使用 File.separator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25566691/