今天在制作坦克大战的图片版本时,遇到了了一个问题,那就是在添加图片时我们应该如何书写路径,是相对路径,还是绝对路径,还是URL,我们来分析下这三种写法的分别有哪些问题。第一种,相对路径。使用相对路径,如果我们访问一张图片,只需要写出“images/1.gif”这种形式就可以了,但前提条件是images文件夹必须放在项目的根录下,但问题也十分明显,如果这个项目的文件夹发生了移动,那么可以就会无法找到该图片;第二种,绝对路径。绝对路径是最简单的一种写法,你无须将文件夹放在任何特殊的位置,只需要将该文件的从盘符开始到文件名为止的路径写出来就可以了,比如:“x:\\imgaes\1.gif”,但是同样,使用这种写法一旦项目移动,图片就会失效。第三种,URL。推荐使用这种方方法,写法如下:类名称.class.getClassLoader().getResource("images/1.gif") 使用URL的全体条件是将images文件夹存在classpath路径下即可,不过我们一般推荐将其放在src目录下,这个时候无论项目如何变化,图片都可以正常访问到。
上面所讲的是图片文件的访问,对于配置文件同样可以采用URL方法,而且我们还可以直接通过URL来获得文件的流对象,在以往的程序中,我们使用流的常规做法是获取File对象,通过File对象的getInputStream()方法来获取文件的流,在URL中为我们提供了一种更加便捷的方法,可以直接通过文件名获取到它的流对象,
类名称.class.getClassLoader().getResourceAsStream("images/1.gif") ,采用这种写法,只要配置文件存放在classpath目录下,就不会失效。下面配上图片: