【问题标题】:Efficient and cross platform way of loading images in Java用Java加载图像的高效和跨平台方式
【发布时间】:2012-06-01 14:36:32
【问题描述】:

我正在学习用 Java 创建游戏,并且需要在制作动画之前加载几张图片。这就是我现在正在做的事情:

bg = new ImageIcon(System.getProperty("user.dir")+"/src/img/bg.jpg").getImage();

但显然它有很多缺点。首先,它看起来又长又丑,我怀疑它很慢。 此外,正斜杠“/”只能在 Mac 或 Linux 上使用,而在 Windows 上,它将使用反斜杠。

编辑:正如下面 Samuel Rossille 所纠正的,正斜杠“/”实际上在 Windows 上工作。

我想知道是否有加载图像,在应用程序目录中,不会改变,以更优雅的方式,以及跨平台?

加载文本文件怎么样?它们有什么不同吗?

【问题讨论】:

  • 请注意,正斜杠在 java 中的窗口上工作。例如,您可以打开文件 new File("C:/foo/bar.txt"),如果您真的想要它,甚至可以打开文件 new File(""c:\\foo/bar.txt")。您应该考虑删除你的问题中关于斜线的断言。

标签: java image text cross-platform embedded-resource


【解决方案1】:

查看信息。在embedded resources。请注意,大多数接受File 的方法和构造函数也将接受InputStreamURL。嵌入式资源是只读的。


关于文件(在极少数情况下,您可能会使用它们并且必须从String 形成路径)。

String fileSep = System.petProperty("file.separator");
bg = new ImageIcon(System.getProperty("user.dir")+
    fileSep+
    "src"+
    fileSep+
    "img"+
    fileSep+
    "bg.jpg").getImage();

这是获取使用文件系统正确分隔符的目录路径的一种方法。 File 类还提供了方便的构造函数,如 new File(parent,child) 将插入正确的分隔符。

顺便说一句,我强烈认为 J2SE 中所有接受 String 以表示 File 路径的方法和构造函数都应该被弃用。如果它需要 File,给它一个 File 并完成它。

【讨论】:

  • 另外,您可以使用 File.separatorChar 来获取特定于平台的文件分隔符而不是“/”字符。这样它就可以在 Mac、Linux 和 Windows 上运行。
  • @Ewald 好点子,我刚刚输入了有关File 对象问题的更新。
  • 呸!担心你偷懒:) 很好的答案,我 +1。
猜你喜欢
  • 1970-01-01
  • 2015-07-23
  • 2014-08-30
  • 2012-11-28
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
相关资源
最近更新 更多